Когда условие не оценивается с помощью оператора 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
Другие вопросы по тегам