@speedvm

Как правильно задать значение параметра при вызове модуля uri Ansible?

Доброго всем всего!
На борту `ansible 2.9.16`.
Запрос через модуль raw:
raw: >
      curl -X POST http://192.168.12.12/api_v3/service/systempartner_systempartner/action/updateConfiguration \
        -d "ks={{ admin_session_key.json }}" \
        -d "pId={{ partner_data.json.id }}" \
        -d "configuration[deliveryProfileIds]=%7B%22applehttp%22%3A%5B{{ delivery_profile_id.json.id }}%5D%7D" \
        -d "configuration[objectType]=SystemPartnerConfiguration" \
        -d "format=1"

Этот же запрос через модуль uri:
uri:
      url: http://192.168.12.12/api_v3/service/systempartner_systempartner/action/updateConfiguration
      method: POST
      body_format: json
      body:
        {
          "ks": "{{ admin_session_key.json }}",
          "pId": "{{ partner_data.json.id }}",
          "configuration": {
            "deliveryProfileIds": '{"applehttp":[{{ delivery_profile_id.json.id }}]}',
            "objectType": "SystemPartnerConfiguration"
          },
          "format": 1
        }

Соответственно, запрос через модуль raw делает то, что и должен. Запрос через модуль uri - не делает то, что должен. То есть дело в значении параметра `deliveryProfileIds`. Пробовал экранировать различные символы и вместе, и по отдельности.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@speedvm Автор вопроса
Вот решение через json:
body:
        {
          "ks": "{{ admin_session_key.json }}",
          "pId": "{{ partner_data.json.id }}",
          "configuration": {
            "deliveryProfileIds": '{"applehttp":[{{ delivery_profile_id.json.id | string }}]}',
            "objectType": "SystemPartnerConfiguration"
          },
          "format": 1
        }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MaxKozlov
Судя по доке
If body_format is set to ‘json’ it will take an already formatted JSON string or convert a data structure into JSON.
типа (не ручаюсь за верные отступы)
tasks:
  uri:
     url: http://192.168.12.12/api_v3/service/systempartner_systempartner/action/updateConfiguration
      method: POST
      body_format: json
      body:
        ks: "{{ admin_session_key.json }}"
        pId: "{{ partner_data.json.id }}"
        configuration:
           deliveryProfileIds:
               applehttp:
                  -  "{{ delivery_profile_id.json.id }}"
               objectType: SystemPartnerConfiguration
        format: 1

ну или таки присвоить всё это переменной и использовать
body: "my_data | to_json"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы