2017-10-05 32 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语句附加到它里面的所有内容。