извлечение переменной из вывода json затем отладка и регистрация outout с ansible
Привет у меня есть проблема получения одной из переменных, извлеченных из вывода json после выполнения скручивания, чтобы быть проанализированы и зарегистрированы обратно в ansible
Playbook:
- name: debug stdout
debug:
msg: "{{ result.stdout | from_json }}"
register: dataresult
- name: debug fact
debug:
msg: "{{ dataresult.data.start_time_string }}"
Вывод:
TASK [backup_api : debug stdout]
***********************************************
task path: /home/ansible/cm-dha/roles/backup_api/tasks/main.yml:36
ok: [127.0.0.1] => {
"msg": {
"data": [
{
"backup_id": 40362,
"certified": null,
"instance_id": 148,
"start_time": 1506985211,
"start_time_string": "10/03/2017 03:00:11 am"
}
],
"timestamp": 1507022232
}
}
Ошибка:
Фатально: [127.0.0.1]: не удалось! => {
"не удалось": верно,
"msg": "поле' args ' имеет недопустимое значение, которое, как представляется, включает в себя переменную, которая не определена. Ошибка была: 'dict object' не имеет атрибута 'data' nn ошибка, по-видимому, была в '/дома/анзибль/см-ДГВ/роли/backup_api/задания/главная.yml': строка 48, столбец 5, но может быть в другом месте файла в зависимости от конкретной синтаксической проблемы.линии NПВ нарушителя представляется:ннн - название: debug самом делеп ^ здесьн"
Ошибка возникает при попытке извлечь значение start_time_string
Итак, как это сделать, вероятно, поскольку я пробовал слишком много вещей, таких как использование with_items, with_dict, моделирование вывода данных[] для отладки и даже выполнение запроса json, но без успеха
Итак, какая-нибудь помощь здесь?
1 ответ:
Не используйте
debugдля присвоения фактов, используйтеset_factвместо этого:- name: debug stdout set_fact: dataresult: "{{ result.stdout | from_json }}" - name: debug fact debug: msg: "{{ dataresult.data[0].start_time_string }}"
Comments