Ich benutze Ansible seit ein paar Monaten, und ich habe ein kleines Problem mit der Reihenfolge der Bereitstellung auf verschiedenen Hosts.Gibt es in Ansible eine Möglichkeit, die Bereitstellung in einer bestimmten Reihenfolge vorzunehmen?
Ich habe 8-Server:
- 4 Reverse-Proxy-Apache
- 4 tomcat-Server
Wenn ich Installationen auf diesen Servern zu machen, muss ich die erste Apache stoppen die Bereitstellung auszuführen auf dem ersten Tomcat. Wenn Tomcat1 fertig ist, muss ich Apache1 starten. Nachdem ich die gleichen Bereitstellungen auf allen Servern fortgesetzt habe.
Wenn meine hosts-Datei ist:
[apache-servers]
apache1
apache2
apache3
apache4
[tomcat-servers]
tomcat1
tomcat2
tomcat3
tomcat4
Dann stoppt ansible ALL Apachen, ALLE Tomcats, macht die Bereitstellung und neu gestartet alle.
Also, ich habe einen Trick gefunden zu tun, was ich will. Ich muss ein Shell-Skript ausführen, um die Host-Datei vor dem Ausführen von Ansible-Playbooks neu zu schreiben.
Gibt es einen besseren Weg, das Gleiche zu tun?
Vielleicht können Sie eine Kombination aus Delegaten und seriellen Anweisungen verwenden: https://docs.ansible.com/ansible/playbooks_delegation.html#delegation –
Eine andere Möglichkeit könnte eine Schleife über Gruppen sein und die Hosts in Gruppen ordnen, denen sie angehören (Ein Apache mit einem Kater in einer Gruppe): https://docs.ansible.com/ansible/faq.html#how-do-i-loop-over-a-list-of-hosts-in-a-group -inside-of-a-template –
Vielleicht finden Sie nützliche rolling upgrades http://docs.ansible.com/ansible/guide_rolling_upgrade.html – RuBiCK