确定播放的主持人

时间:2018-09-25 12:27:54

标签: ansible ansible-inventory

我在不同的服务器上运行多个不同的应用程序,例如

  • app-1devserver-1devserver-2上(以群集模式运行)
  • app-2devserver-3devserver-4上(以群集模式运行)
  • app-3devserver-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的情况下确定剧本(在多个应用之间共享)的主机?

1 个答案:

答案 0 :(得分:1)

将它们分组在您的主机文件中,如下所示:

[app-1]
devserver-1
devserver-2
[app-2]
devserver-3
devserver-4
[app-3]
devserver-1

然后让您的剧本在hosts行中使用变量:

- hosts: "{{ app_name }}"

(老实说,我不记得您是否可以在组名中使用-。尝试一下。)

相关问题