Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ansible skip import_playbook with variable definition

Tags:

I have a main.yaml like below:

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

I want the playbook 2.yaml can be skipped totally (not try to execute any tasks inside 2.yaml). But it looks all tasks in 2.yaml will be called but not executed.

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"

The output is:

$ 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]

The you can say the task in 2.yaml also was called but skipped. But I want no any tasks will be called in 2.yaml.

Is it possible?

like image 274
Bo Wang Avatar asked Oct 05 '17 07:10

Bo Wang


People also ask

How do I ignore fatal errors in Ansible?

Ignoring failed commands By default Ansible stops executing tasks on a host when a task fails on that host. You can use ignore_errors to continue on in spite of the failure. The ignore_errors directive only works when the task is able to run and returns a value of 'failed'.

How do I skip tasks in Ansible?

If you assign the never tag to a task or play, Ansible will skip that task or play unless you specifically request it ( --tags never ).

How do you stop playbook in Ansible?

The default behavior is to pause with a prompt. You can use ctrl+c if you wish to advance a pause earlier than it is set to expire or if you need to abort a playbook run entirely. To continue early: press ctrl+c and then c . To abort a playbook: press ctrl+c and then a .


1 Answers

No, this is not possible this way.

Please see answer at serverfault about import/include difference.

import_playbook is static, so it's always done and when statements attached to everything inside it.

like image 156
Konstantin Suvorov Avatar answered Sep 25 '22 11:09

Konstantin Suvorov