Ansible görevde bir sözlük anahtarının tanımlanmadığını kontrol etmenin bir yolu var mı?


18

Kodumda bir görevim var

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

ve benim varlıklarım benziyor

---
me:
  stumped: yes

Görevi çalıştırdığımda aşağıdaki hata ile geri geliyor

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

Yanıtlar:


25

Eklediğiniz sözdizimi:

when: me.cool is not defined

doğru.

Ayrıca şunları kullanabilirsiniz not in:

when: "'cool' not in me"

Sorun şu ki, hata mesajınız:

'Me.cool' koşullu denetimi başarısız oldu.

durumunuzun şu şekilde tanımlandığını iddia ediyor:

when: me.cool

Yani, kullandığınız sürümde bazı hatalar var (ancak hangisinin olduğunu paylaşmadınız) ve bilinen sorunlar vardı veya hataya neden olan tam görevi göndermediniz.


1
Orijinal kodu aynı değere karşılık gelen ikinci bir zaman koşulu atmadığı takdirde hata yine de olabilir. Bu çalışıyor: Bu işe when: is_installed.rc is defined and is_installed.rc == 0yaramaz:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.