我在不同的服务器上运行多个不同的应用程序,例如
app-1
在devserver-1
和devserver-2
上(以群集模式运行)app-2
在devserver-3
和devserver-4
上(以群集模式运行)app-3
在devserver-1
上运行(独立运行)。在我的dev
临时文件中,列出了所有4个devserver。
现在,我想写一本经过参数设置的剧本,当我提供一个 app_name 变量时,它“知道”它必须在哪些主机上运行。
目前,我有一个包含以下内容的var文件:
# vars/apps.yml
apps:
app-1:
servers:
dev:
- devserver-1
- devserver-2
还有这样的剧本:
# playbook.yml
vars_files:
- vars/apps.yml
hosts: "{{ apps[app_name].servers[stage] | join(',') }}"
但是由于种种原因,我对这种配置不满意,并希望避免使用vars_files
(并改用Roles / include_vars
)。
那么如何在不使用vars_files
的情况下确定剧本(在多个应用之间共享)的主机?
答案 0 :(得分:1)
将它们分组在您的主机文件中,如下所示:
[app-1]
devserver-1
devserver-2
[app-2]
devserver-3
devserver-4
[app-3]
devserver-1
然后让您的剧本在hosts
行中使用变量:
- hosts: "{{ app_name }}"
(老实说,我不记得您是否可以在组名中使用-
。尝试一下。)