Когда условие не оценивается с помощью оператора include
У меня есть tikitaka3.yml
(основной файл yml) и tikitaka3a.yml
(Playbook будет включен).
Я запрашиваю у пользователя переменную, а затем в разделе задач я вызываю ее, например, так:
---
- hosts: all
vars:
khan:
# contents: "{{ lookup('file', '/home/imran/Desktop/tobefetched/file1.txt') }}"
vars_prompt:
- name: targetenv
prompt: 1.)EPC 2.)CLIENTS 3)TESTERS
private: False
default: "1"
gather_facts: no
tasks:
- name: Inlude playbook tikitaka3a
include: /home/khan/Desktop/playbooks/tikitaka3a.yml target=umar
when: targetenv.stdout|int < 2 #this statement has no effect
#when: targetenv == 1 #Neither does this statement
#when: targetenc == "1" #and neither does this statement have affect
#- name: stuff n stuff # This task will give an error if not commented
# debug: var=targetenv.stdout
Оператор включения всегда вступает в силу, без условия когда-либо оцениваемого.
Почему это происходит?
1 ответ
Когда вы включаете файл задачи Ansible, он прикрепит when:
условие для всех включенных задач. Это означает, что вы увидите задачи, отображаемые даже тогда, когда when:
условие ложно, хотя все задачи будут пропущены.
Одна проблема с вашим кодом выше targetenv.stdout
Вот рабочая версия с правильным форматированием:
- hosts: all
gather_facts: no
vars_prompt:
- name: targetenv
prompt: 1.)EPC 2.)CLIENTS 3)TESTERS
private: False
default: "1"
tasks:
- name: Inlude playbook tikitaka3a
include: roles/test/tasks/tikitaka3a.yml target=umar
when: targetenv|int < 2