我有一个main.yaml
像下面这样:
- import_playbook: 1.yaml
- import_playbook: 2.yaml
vars:
allow2: False
when: allow2
我想要剧本2.yaml
可以完全跳过(不要尝试执行里面的任何任务2.yaml
)。
但它看起来所有任务2.yaml
会被调用但不会被执行。
File 1.yaml
:
- name: Go1
hosts: test
gather_facts: false
tasks:
- debug: msg="Message from 1.yaml"
File 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
.
是否可以?
不,这样是不可能的。
请参阅 serverfault 的答案导入/包含差异 https://serverfault.com/questions/875247/whats-the-difference-between-include-tasks-and-import-tasks/875292#875292.
import_playbook
是静态的,所以它总是完成并且when
附加到其中所有内容的声明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)