Ansible跳过带变量定义的import_playbook

时间:2017-10-05 07:21:16

标签: ansible

我有一个像下面这样的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中不会调用任何任务。

有可能吗?

1 个答案:

答案 0 :(得分:3)

不,这是不可能的。

请参阅serverfault关于import/include difference的回复。

import_playbook是静态的,所以它总是完成,when语句附加到其中的所有内容。