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}} } }'
我创建了一个列表,我想将其用作 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}} } }'