我怀疑我是以错误的方式解决这个问题,但我想使用Ansible来安装一组Web服务器,然后安装一个Web应用程序。我很难弄清楚角色应该是什么样子,特别是应用角色应该依赖的东西。
我可以为每个Web服务器设置角色,但似乎我必须为每个app-webserver对设置一个角色。似乎没有办法让应用程序依赖于任何Web服务器,或者根据我在meta/main.yml
中使用它的尝试使用变量来指定依赖角色。
或者,我可以拥有一个通用的Web服务器角色,该角色本身会安装一个受支持的Web服务器,但我不确定它应该如何工作,并且我已经启用了查找要引用的示例。
也许我正在以错误的方式思考这个问题。重复是唯一的方法吗? (为了简洁,我稍微简化了问题,实际上我也有多个可以使用的数据库,因此组合将是m*n
app-webserver-db triplets。)
答案 0 :(得分:0)
我不确定完全理解你的问题。但似乎您可以通过正确组织库存来解决这个问题。
[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_role
会安装和配置常见内容,而application1_role
,application2_role
,application3_role
和application4_role
会安装和配置特定于应用程序的内容。
答案 1 :(得分:0)
您可以在广告资源中使用群组。为每个应用程序服务器(webservers
,geronimo
等创建主要组jetty
和子组:
[webservers:children]
geronimo
glassfish
jetty
wildfly
[geronimo]
srv1
[glassfish]
srv2
[jetty]
srv3
[wildfly]
srv4
然后根据包含的子组安装适当的应用程序服务器。最后在每个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