2017-10-05 60 views
1

我有一個main.yaml象下面這樣:Ansible跳過import_playbook與變量定義

 
- import_playbook: 1.yaml 

- import_playbook: 2.yaml 
    vars: 
    allow2: False 
    when: allow2 

我想要的劇本2.yaml完全可以跳過(不嘗試執行內部2.yaml任何任務)。 但是它看起來2.yaml中的所有任務都會被調用,但不會被執行。

文件1.yaml

 
- name: Go1 
    hosts: test 
    gather_facts: false 

    tasks: 
    - debug: msg="Message from 1.yaml" 

文件2.yaml

 
- name: Go2 
    hosts: test 
    gather_facts: false 
    tasks: 
    - debug: msg="Message from 2.yaml" 

輸出是:

 
$ ansible-playbook main.yaml 

PLAY [Go1] *********** 
TASK [debug] ********* 
Thursday 05 October 2017 03:10:12 -0400 (0:00:00.116)  0:00:00.116 ****** 
ok: [test1] => {} 

MSG: 

Message from 1.yaml 


PLAY [Go2] ************ 

TASK [debug] ************ 
Thursday 05 October 2017 03:10:12 -0400 (0:00:00.090)  0:00:00.206 ****** 
skipping: [test1] 

的,你可以說,在2.yaml任務也被稱爲但跳過了。 但是我不想在2.yaml中調用任何任務。

可能嗎?

回答

1

不,這是不可能的。

請參閱serverfault上的回答約import/include difference

import_playbook是靜態的,所以它總是完成並且when語句附加到它裏面的所有內容。