如何使用Ansible将web应用程序部署到多个web服务器之一?
我怀疑我这样做是错误的,但我想使用Ansible安装一组web服务器中的一个,然后在上面安装一个web应用程序。我很难弄清楚角色应该是什么样子,尤其是应用程序角色应该依赖什么 我可以为每个web服务器设置角色,但似乎每个应用程序web服务器对都必须设置一个角色。似乎没有办法让应用程序依赖于任何web服务器,或者根据我在如何使用Ansible将web应用程序部署到多个web服务器之一?,ansible,Ansible,我怀疑我这样做是错误的,但我想使用Ansible安装一组web服务器中的一个,然后在上面安装一个web应用程序。我很难弄清楚角色应该是什么样子,尤其是应用程序角色应该依赖什么 我可以为每个web服务器设置角色,但似乎每个应用程序web服务器对都必须设置一个角色。似乎没有办法让应用程序依赖于任何web服务器,或者根据我在meta/main.yml中尝试使用的一个变量来指定依赖角色 或者,我可以有一个通用的Web服务器角色,该角色本身安装一个受支持的Web服务器,但我不确定该如何工作,我已经找到了一
meta/main.yml
中尝试使用的一个变量来指定依赖角色
或者,我可以有一个通用的Web服务器角色,该角色本身安装一个受支持的Web服务器,但我不确定该如何工作,我已经找到了一个可供参考的示例
也许我想得不对。复制是唯一的方法吗?(为了简洁起见,我简化了这个问题,实际上我也有多个数据库可以使用,因此组合将是
m*n
app-webserver-db三元组。)我不确定是否完全理解您的问题。但似乎你可以通过合理组织库存来解决这个问题
[webservers]
srv1
srv2
srv3
srv4
[application1]
srv1
[application2]
srv2
[application3]
srv3
[application4]
srv4
您可以一次配置所有Web服务器,然后在相应的Web服务器上安装每个应用程序
---
- hosts: webservers
roles:
- webserver_role
- hosts: application1
roles:
- application1_role
- hosts: application2
roles:
- application2_role
- hosts: application3
roles:
- application3_role
- hosts: application4
roles:
- application4_role
webserver\u-role
将安装和配置常用的东西,而application1\u-role
、application2\u-role
、application3\u-role
和application4\u-role
将安装和配置特定于应用程序的东西。您可以使用库存中的组。为每个应用程序服务器创建一个主组webserver
,以及子组(geronimo
,jetty
,等等):
然后根据包含的子组安装适当的应用程序服务器。最后在每个Web服务器上安装应用程序:
---
- hosts: geronimo
roles:
- geronimo_role
- hosts: glassfish
roles:
- glassfish_role
- hosts: jetty
roles:
- jetty_role
- hosts: wildfly
roles:
- wildfly_role
- hosts: webservers
roles:
- application_role
谢谢,但问题是
webserver\u角色
需要安装多个web服务器中的一个(例如Geronimo、GlassFish、Jetty、WildFly等)。只有一个应用程序,但它可以部署到多个web服务器(数据库也是如此)。这就是我想弄明白的部分,我不能让应用程序角色依赖于变量{{webserver\u role}}
,它不起作用。好的。我理解错了。看看我的第二个答案。
---
- hosts: geronimo
roles:
- geronimo_role
- hosts: glassfish
roles:
- glassfish_role
- hosts: jetty
roles:
- jetty_role
- hosts: wildfly
roles:
- wildfly_role
- hosts: webservers
roles:
- application_role