如何使用Ansible将web应用程序部署到多个web服务器之一?

如何使用Ansible将web应用程序部署到多个web服务器之一?,ansible,Ansible,我怀疑我这样做是错误的,但我想使用Ansible安装一组web服务器中的一个,然后在上面安装一个web应用程序。我很难弄清楚角色应该是什么样子,尤其是应用程序角色应该依赖什么 我可以为每个web服务器设置角色,但似乎每个应用程序web服务器对都必须设置一个角色。似乎没有办法让应用程序依赖于任何web服务器,或者根据我在meta/main.yml中尝试使用的一个变量来指定依赖角色 或者,我可以有一个通用的Web服务器角色,该角色本身安装一个受支持的Web服务器,但我不确定该如何工作,我已经找到了一

我怀疑我这样做是错误的,但我想使用Ansible安装一组web服务器中的一个,然后在上面安装一个web应用程序。我很难弄清楚角色应该是什么样子,尤其是应用程序角色应该依赖什么

我可以为每个web服务器设置角色,但似乎每个应用程序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