Как использовать URL-адрес из ответа в формате json с модулем get_url?

#json #rest #ansible

#json #rest #ansible

Вопрос:

Я запрашиваю REST API, чтобы предоставить мне URL-адрес загрузки для определенного элемента (это решается с помощью uri-модуля). Затем я пытаюсь использовать URL-адрес в модуле get_url, но он завершается ошибкой со следующим сообщением

FAILED! => {"msg": "template error while templating string: expected name or number. String: {{ cora_response.json.['@odata.mediaReadLink'].stdout | from_json }}"}

Как я предполагаю поместить переменную в параметр url? В настоящее время моя задача выглядит так:

 - name: Download Link from REST
   debug: var=cora_response.json['@odata.mediaReadLink']

- name: Download the latest Release
  get_url:
    url: "{{ cora_response.json.['@odata.mediaReadLink'].stdout | from_json }}"
    dest: "{{ installation_path }}/install/19.3.zip"
    mode: 660
  

Моя задача отладки показывает мне URL, который я пытаюсь использовать, однако модуль get_url терпит неудачу.

Пожалуйста, сообщите и заранее благодарим вас.

Редактировать: попробовал следующее, предложенное @al76

 - name: Download the latest CH Release
  get_url:
    url: "{{ cora_response.json['@odata.mediaReadLink'].stdout | from_json }}"
    dest: "{{ installation_path }}/install/CH19.3.zip"
    mode: 660
  

Сообщение об ошибке:

 fatal: [ln-lnxcelcon01.owo.company]: FAILED! => {"msg": "Unexpected templating type error occurred on ({{ cora_response.json['@odata.mediaReadLink'].stdout | from_json }}): expected string or buffer"}
  

Ответ №1:

попробуйте

 url: "{{ cora_response.json['@odata.mediaReadLink'].stdout | from_json }}"
  

Комментарии:

1. Та же самая проблема

Ответ №2:

Слепая удача избавила меня от страданий

 url: "{{ cora_response.json['@odata.mediaReadLink'] }}"