Чи є спосіб перевірити, чи ключ словника не визначений в ansible завдання?


18

Тож у своєму коді у мене є завдання

- name: cool task
  shell: 'touch iamnotcool.txt'
  when: me.cool is not defined

і виглядає моя вар

---
me:
  stumped: yes

Тож коли я виконую завдання, воно повертається із наступною помилкою

{"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.

Відповіді:


25

Синтаксис, який ви включили:

when: me.cool is not defined

правильно.

Ви також можете використовувати not in:

when: "'cool' not in me"

Проблема полягає в тому, що ваше повідомлення про помилку:

Не вдалося виконати умовну перевірку "me.cool".

стверджує, що ваш стан визначається як:

when: me.cool

Отже, або є якась помилка у використаній вами версії (але ви не поділилися, яка вона є), і були відомі проблеми , або ви не опублікували точне завдання, яке спричинило помилку.


1
Помилка все-таки може статися, якби він не розмістив оригінальний код, замислюючись секунду, коли-умова, яке посилається на те саме значення. Це працює: when: is_installed.rc is defined and is_installed.rc == 0Це не так:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.