Я создал список, который хочу использовать в качестве входного параметра в теле модуля uri
. Когда я пытаюсь использовать список, я сталкиваюсь с проблемой одинарных/двойных кавычек.
- set_fact:
my_entities: "{{ entities.results | json_query('[].json.entities[].entityId') }}"
TASK [set_fact] ****************************************************************
ok: [localhost] => {"ansible_facts": {"my_entities": ["HOST-CD2D2A58FB173BF0", "HOST-41B005A2056B6C03"]}, "changed": false}
- name: test
uri:
url: "XXXXX"
method: POST
headers:
Content-Type: application/json; charset=utf-8
Authorization: XXXXX
return_content: yes
status_code: 201
body: "{\"metadata\":{\"clusterVersion\":\"Mock version\"},\"scope\":{\"entities\":[\"{{ my_entities }}\"]}}
validate_certs: no
body_format: json
Когда я запускаю playbook, я вижу в отчете об ошибке, что объекты перечислены в одинарных кавычках.
"scope": {
"entities": [
"['HOST-CD2D2A58FB173BF0', 'HOST-41B005A2056B6C03']"
],
Когда я выбираю только первое значение из списка, оно работает:
body: "{\"metadata\":{\"clusterVersion\":\"Mock version\"},\"scope\":{\"entities\":[\"{{ my_entities | first }}\"]}}
В отчете я вижу, что объекты выглядят так:
"entities": [
"HOST-CD2D2A58FB173BF0"
],
В заключение я хочу использовать полный список {{ my_entities }}
в вызове uri
POST, где объекты должны быть заполнены как ["HOST-CD2D2A58FB173BF0", "HOST-41B005A2056B6C03"]
Укажите минимальный, полный и проверяемый пример. Спасибо.
@Frenchy это не опечатка. Это копия, вставленная из исполнения плейбука. Когда я запускаю свою пьесу с ansible_facts: «my_entities», я вижу в выводе json неудачной задачи, что сущности заполняются как: «['HOST-CD2D2A58FB173BF0', 'HOST-41B005A2056B6C03']»
я не знаю, если вы хотите список или список списка....
попробуй это:
body: '{"metadata":{"clusterVersion":"Mock version"},"scope":{"entities":[{{my_entities}}] } }'
или это:
body: '{"metadata":{"clusterVersion":"Mock version"},"scope":{"entities":{{my_entities}} } }'
Проблема была с двойными скобками []. Итак, удаление таких, как в вашем втором ответе, помогло!
"['HOST-CD2D2A58FB173BF0', 'HOST-41B005A2056B6C03']" - это строка, а не список... или это опечатка?