2016-10-19 110 views
0

鑑於以下清單中的組:排除包含本地主機

[group1] 
myserver.domain.com ansible_ssh_user=myUser 

[group2] 
localhost    ansible_connection=local 

如何,我只執行group1主機(S)在我的劇本?

當我使用--limit=group1,還包括本地主機

我試過--limit='!group2',它也不管用。

有什麼想法?

提前THX

編輯: 我使用ansible 1.9.2。

回答

0

我無法在您的完整版本上測試它。我建議你一個解決辦法更改目標主機定義你的劇本如下:

所以你有這樣的事情

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

和運行劇本添加額外的環境變量hosts_nodes

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

Thx再次。這似乎是一個很好的解決方法,但我會說'''默認('無')'''而不是' '''all'''' –

+0

這只是一個例子,當然選擇最合適的默認值爲您的目的 – gile

+0

即使它不是我所期望的,我會檢查這個答案。爲什麼本地系統被系統地包括在內,即使我排除了它的團體...我想這是多麼可靠的作品... Thx爲你的時間。 –

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 
+0

Thx for ansersering,但只包含group2。我想要達到的是完全相反:僅包含group1。 –

+0

你在開玩笑嗎?更改爲「--limit group1」或--limit'!group2'「。嘗試更新Ansible版本(如果它不起作用)。 – gile

+0

我不是在開玩笑......你的回答是有效的,但不是相反:localhost似乎 –