排除包含localhost的组

时间:2016-10-19 06:59:55

标签: ansible-playbook

鉴于以下清单:

[group1]
myserver.domain.com   ansible_ssh_user=myUser

[group2]
localhost             ansible_connection=local

我怎样才能在group1主机上执行我的剧本?

当我使用--limit=group1时,它还包括localhost

我尝试了--limit='!group2',它也无效。

有什么想法吗?

提前谢谢

修改 我使用的是ansible 1.9.2。

2 个答案:

答案 0 :(得分:0)

您使用的是哪个版本?它在版本2.1.2.0中具有相关性。

这是我的test.inventory文件

[group1]
myserver.domain.com   ansible_ssh_user=myUser

[group2]
localhost             ansible_connection=local

这是我的测试手册test.yml

- name: Test limit
  hosts: all
  tasks:
      - file: path=/tmp/mydir state=directory

我得到了预期的运行

ansible-playbook -i test.inventory --limit group2 test.yml

ansible-playbook -i test.inventory --limit '!group1' test.yml

答案 1 :(得分:0)

我无法在你的ansible版本上测试它。我建议你改变你的剧本中的目标主持人定义的解决方法如下:

所以你会有类似的东西

- name: Test limit
  hosts: "{{ hosts_nodes | default('all')}}"
  tasks:
      - file: path=/tmp/mydir state=directory

并运行playbook添加其他环境变量hosts_nodes

ansible-playbook -i test.inventory test.yml -e hosts_nodes=group1