Ansible 我是否可以强制将当前主机组标识为playbook include中的另一个主机组?

Ansible 我是否可以强制将当前主机组标识为playbook include中的另一个主机组?,ansible,ansible-playbook,Ansible,Ansible Playbook,目前的情况是: 我有一个剧本,它提供了一堆服务器,并在这些服务器上安装了应用程序。 其中一个应用程序已经有了自己的ansible playbook,我想用它。现在我的问题来自于这个剧本,因为它仅限于主机:[prod],我在上层剧本中的主机组是不同的 我知道我可以使用add_host将所需的主机添加到prod组,但这是一个我不喜欢的解决方案 所以我的问题是:有没有一种方法可以将当前主机添加到include语句中的新主机组? 类似于-include:foo.yml prod={{{ansible\u

目前的情况是: 我有一个剧本,它提供了一堆服务器,并在这些服务器上安装了应用程序。 其中一个应用程序已经有了自己的ansible playbook,我想用它。现在我的问题来自于这个剧本,因为它仅限于
主机:[prod]
,我在上层剧本中的主机组是不同的

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

所以我的问题是:有没有一种方法可以将当前主机添加到include语句中的新主机组? 类似于
-include:foo.yml prod={{{ansible\u host\u group}}


或者我可以只包含剧本中的任务吗?

不,没有直接的方法

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

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

- 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"

此解决方法是否适合您?

剧本可能包含多个剧本,每个剧本都有不同的主机,因此在包含剧本时无法覆盖
主机
属性。您的示例不起作用,因为这里没有定义
ansible\u host\u group
——您可以包括Playbook(主机尚未定义)或Tasks(主机已固定)。考虑在你的清单中使用包含你的实际组名的<代码> [PROD:Field] >条目,或者在包含Fo.Y.YL Prand Booad之前调用主机:KEY= PROD/<代码>任务。可惜这不是一个真正的选项,因为我不能去修改PrasBoobe,我会接受这个,因为这是正确的方法,但它没有解决我的问题:)