我可以强制将当前主机组识别为剧本中的另一个吗?

时间:2016-06-30 11:40:07

标签: ansible ansible-playbook

目前的情况如下: 我有一个剧本,它提供了一堆服务器并为这些服务器安装了应用程序。 其中一个应用程序已经拥有了我想要使用的自己的ansible playbook。现在我的问题来自于这本剧本,因为它仅限于hosts: [prod],而我在高级剧本中的主持人群体则不同。

我知道我可以使用add_host将所需的主机添加到prod组,但这是一个我不喜欢的解决方案。

所以我的问题是:有没有办法将当前主机添加到include语句中的新主机组? 像- include: foo.yml prod={{ ansible_host_group }}

这样的东西

或者我可以以某种方式仅包含剧本中的任务?

1 个答案:

答案 0 :(得分:1)

不,没有直接的方法可以做到这一点。

  

现在我的问题来自于这本剧本,因为它仅限于此   hosts: [prod]

您可以通过额外的变量设置主机更灵活:

- name: add role fail2ban
  hosts: '{{ target }}'
  remote_user: root
  roles:
    - fail2ban

运行它:

ansible-playbook testplaybook.yml --extra-vars "target=10.0.190.123"
ansible-playbook testplaybook.yml --extra-vars "target=webservers"

这种解决方法适合您吗?