【发布时间】:2016-04-21 19:36:06
【问题描述】:
我已经使用 Ansible 几个月了,但我在不同主机上的部署顺序有点问题。
我有 8 台服务器:
- 4个反向代理apache
- 4 个 tomcat 服务器
当我在这些服务器上进行部署时,我必须停止第一个 Apache 才能在第一个 Tomcat 上执行部署。 Tomcat1 完成后,我必须启动 Apache1。在我在所有服务器上继续相同的部署之后。
如果我的主机文件是:
[apache-servers]
apache1
apache2
apache3
apache4
[tomcat-servers]
tomcat1
tomcat2
tomcat3
tomcat4
然后,Ansible 停止所有 Apache、所有 Tomcat,进行部署并重新启动所有。
所以,我找到了做我想做的事的诀窍。在运行 ansible-playbooks 之前,我必须运行一个 shell 脚本来重写主机文件。
有没有更好的方法来做同样的事情?
【问题讨论】:
-
也许您可以使用委托和串行指令的组合:docs.ansible.com/ansible/playbooks_delegation.html#delegation
-
另一种方法可能是对组进行循环,并在它们所属的组中对主机进行排序(一个 apache 和一个组中的一个 tomcat):docs.ansible.com/ansible/…
-
也许你能找到有用的滚动升级docs.ansible.com/ansible/guide_rolling_upgrade.html
-
另外,您可以使用策略来避免以线性方式执行:docs.ansible.com/ansible/playbooks_strategies.html