辞書キーがansibleタスクで定義されていないことを確認する方法はありますか?


17

私のコードにはタスクがあります

- 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'.

回答:


24

含めた構文:

when: me.cool is not defined

正しい。

以下も使用できますnot in

when: "'cool' not in me"

問題は、あなたのエラーメッセージが:

条件チェック「me.cool」が失敗しました。

あなたの状態が次のように定義されていると主張します:

when: me.cool

そのため、使用しているバージョンに何らかのバグがあり(ただし、どのバージョンであるかを共有していません)、既知の問題があったか、エラーの原因となった正確なタスクを投稿しませんでした。


1
同じ値を参照する2番目のwhen条件を省略した元のコードを投稿しないと、エラーが発生する可能性があります。これは動作します: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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.