Ansible список одинарных/двойных кавычек

Я создал список, который хочу использовать в качестве входного параметра в теле модуля 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"]

"['HOST-CD2D2A58FB173BF0', 'HOST-41B005A2056B6C03']" - это строка, а не список... или это опечатка?

Frenchy 18.03.2022 10:53

Укажите минимальный, полный и проверяемый пример. Спасибо.

Zeitounator 18.03.2022 11:01

@Frenchy это не опечатка. Это копия, вставленная из исполнения плейбука. Когда я запускаю свою пьесу с ansible_facts: «my_entities», я вижу в выводе json неудачной задачи, что сущности заполняются как: «['HOST-CD2D2A58FB173BF0', 'HOST-41B005A2056B6C03']»

Kevin 18.03.2022 11:06
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
1
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

я не знаю, если вы хотите список или список списка....

попробуй это:

body: '{"metadata":{"clusterVersion":"Mock version"},"scope":{"entities":[{{my_entities}}] } }'

или это:

body: '{"metadata":{"clusterVersion":"Mock version"},"scope":{"entities":{{my_entities}} } }'

Проблема была с двойными скобками []. Итак, удаление таких, как в вашем втором ответе, помогло!

Kevin 18.03.2022 11:20

Другие вопросы по теме