我有一个像下面这样的main.yaml:
- 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中不会调用任何任务。
有可能吗?
答案 0 :(得分:3)
不,这是不可能的。
请参阅serverfault关于import/include difference的回复。
import_playbook
是静态的,所以它总是完成,when
语句附加到其中的所有内容。