Apakah ada cara untuk memeriksa bahwa kunci kamus tidak didefinisikan dalam tugas yang memungkinkan?

17

Jadi dalam kode saya, saya punya tugas

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

dan vars saya terlihat seperti

---
me:
  stumped: yes

Jadi ketika saya menjalankan tugas itu kembali dengan kesalahan berikut

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

Jawaban:

24

Sintaks yang Anda masukkan:

when: me.cool is not defined

benar.

Anda juga dapat menggunakan not in:

when: "'cool' not in me"

Masalahnya adalah bahwa pesan kesalahan Anda:

Pemeriksaan bersyarat 'me.cool' gagal.

klaim kondisi Anda didefinisikan sebagai:

when: me.cool

Jadi, baik ada bug dalam versi yang Anda gunakan (tetapi Anda tidak membagikan yang mana itu) dan ada masalah yang diketahui , atau Anda tidak memposting tugas tepat yang menyebabkan kesalahan.

techraf
sumber
1
Kesalahan masih bisa terjadi, jika dia tidak memposting kode asli dan ommited kondisi ketika kedua yang mengacu pada nilai yang sama. Ini berfungsi: when: is_installed.rc is defined and is_installed.rc == 0Ini tidak:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime