我有一个设置所有服务器的脚本。现在试图找出一种配置它们以便彼此交谈的好方法。例如配置应用程序服务器以与特定数据库服务器通信。
我唯一可以想出一个将服务器作为params的角色,但我不喜欢我还必须指定主机两次。
- name: Test app 1
hosts: [db01, app01, app02, mem01]
roles:
- {role: app, db: db01, ap: [app01, app02], mem: mem01}
答案 0 :(得分:0)
查看您发布的内容,这可能是一个很好的库存文件组织:
[testapp1-dbServers]
db01
[testapp1-appServers]
app01
app02
[testapp1-memServers]
mem01
[testapp2-dbServers]
db02
[testapp2-appServers]
app03
[testapp2-memServers]
mem02
[testapp1:children]
testapp1-dbServers
testapp1-appServers
testapp1-memServers
[testapp2:children]
testapp2-dbServers
testapp2-appServers
testapp2-memServers
[dbServers:children]
testapp1-dbServers
testapp2-dbServers
[appServers:children]
testapp1-appServers
testapp2-appServers
[memServers:children]
testapp1-memServers
testapp2-memServers
如果您没有计划增加前6个存储桶中任何一个服务器的数量,这可能会有点过分,但是它允许您执行诸如group_vars文件之类的操作(对于某些或所有分组来说都是个别的 - testapp1,testapp2,dbServers等等)并清理你的剧本文件:
- name: Test app 1
hosts: testapp1 (all vars passed via group_vars file)
roles:
- generic_server_setup
- name: DB Server setup
hosts: dbServers (all vars passed via group_vars file)
roles:
- install_postgres
- other_db_things
here可以找到最能帮到你的东西。
具体来说,访问当前主机所在的所有组以及组中的所有主机。
快速修复:如果您想牺牲一些组织,因为您不担心扩展并且不会被多个位置的相同信息所困扰,只需将相关主机作为vars添加到group_vars下的testapp1和testapp2文件。 / p>