Ansible 列表 single/double 引号

Ansible list single/double quotes

我创建了一个列表,我想将其用作 uri 模块主体的输入参数。当我尝试使用列表时,我遇到了 single/double 引用的问题。

- 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

当我 运行 剧本时,我可以在失败报告中看到实体以单引号列出。

"scope": {
          "entities": [
            "['HOST-CD2D2A58FB173BF0', 'HOST-41B005A2056B6C03']"
          ],

当我只 select 列表中的第一个值时,它起作用了:

body: "{\"metadata\":{\"clusterVersion\":\"Mock version\"},\"scope\":{\"entities\":[\"{{ my_entities | first }}\"]}}

在报告中我可以看到实体如下:

 "entities": [
            "HOST-CD2D2A58FB173BF0"
          ],

总而言之,我想将完整列表 {{ my_entities }} 用于 uri POST 调用,其中实体应填充为 ["HOST-CD2D2A58FB173BF0", "HOST-41B005A2056B6C03"]

我不知道你是想要列表还是列表的列表....

试试这个:

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

或者这个:

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