Có cách nào để kiểm tra rằng khóa từ điển không được xác định trong tác vụ ansible không?


17

Vì vậy, trong mã của tôi, tôi có một nhiệm vụ

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

và lọ của tôi trông giống như

---
me:
  stumped: yes

Vì vậy, khi tôi chạy tác vụ, nó trở lại với lỗi sau

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

Câu trả lời:


24

Cú pháp bạn bao gồm:

when: me.cool is not defined

đúng.

Bạn cũng có thể sử dụng not in:

when: "'cool' not in me"

Vấn đề là thông báo lỗi của bạn:

Kiểm tra có điều kiện 'me.cool' không thành công.

yêu cầu điều kiện của bạn được xác định là:

when: me.cool

Vì vậy, có một số lỗi trong phiên bản bạn sử dụng (nhưng bạn không chia sẻ đó là lỗi gì) và đã có sự cố đã biết hoặc bạn đã không đăng chính xác tác vụ gây ra lỗi.


1
Lỗi vẫn có thể xảy ra, nếu anh ta không đăng mã gốc thì sẽ xuất hiện một giây khi điều kiện có cùng giá trị. Điều này hoạt động: when: is_installed.rc is defined and is_installed.rc == 0Điều này không:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.