Tôi có một nhiệm vụ Ansible thực hiện yêu cầu URI đến trang web để nhận phản hồi JSON. Tôi muốn Ansible làm một cái gì đó nếu biến JSON lồng nhau được xác định và một cái gì đó khác nếu nó không.
- name: Get JSON from the Interwebs
uri: url="http://whatever.com/jsonresponse" return_content=yes
register: json_response
- name: Write nested JSON variable to disk
copy: content={{json_response.json.nested1.nested2}} dest="/tmp/foo.txt"
Lưu ý rằng việc sử dụng ignore_errors
chỉ hoạt động cho lệnh của tác vụ không thành công, không phải để kiểm tra các giá trị không xác định trong cấu trúc dữ liệu lồng nhau trong mẫu Jinja. Vì vậy, nếu json_response.json.nested1.nested2
không được xác định, tác vụ này vẫn sẽ thất bại mặc dù ignore_errors=yes
đã được đặt.
Làm cách nào để có được playbook này để lưu trữ một số giá trị mặc định /tmp/foo.txt
nếu yêu cầu không thành công hoặc nếu yêu cầu không có giá trị lồng nhau được xác định?
$key
trường trong phản hồi - tức làdefault
bộ lọc của jinja có thể hữu ích cho.