2016-04-19 12 views
1

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?

+0

Vielleicht können Sie eine Kombination aus Delegaten und seriellen Anweisungen verwenden: https://docs.ansible.com/ansible/playbooks_delegation.html#delegation –

+0

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 –

+1

Vielleicht finden Sie nützliche rolling upgrades http://docs.ansible.com/ansible/guide_rolling_upgrade.html – RuBiCK

Antwort

0

Verwenden Sie serial: 1 in Ihrem Spiel und es wird das Spiel auf einem Host zu der Zeit ausgeführt.

Verwandte Themen