извлечение переменной из вывода 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, но без успеха



Итак, какая-нибудь помощь здесь?

606   1  

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

    Ничего не найдено.