gpt4 book ai didi

jquery - 使用 Jquery (jmespath) 从 Ansible 获取 API 调用

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:52 25 4
gpt4 key购买 nike

Ansible 中的 Jquery 对我来说效果不佳。这是场景。

我正在尝试对卫星 api 进行 GET 调用。它给我带来了以下输出:

"parameters": [
{
"name": "sports",
"value": "soccer"
},
{
"name": "color",
"value": "blue"
},
],

现在我想了解体育的值(value)。这是我的剧本

- name: Make GET api calls from ansible
uri:
url: https://example/api/xyz
method: GET
user: administrator
password: space@L42
force_basic_auth: yes
validate_certs: no
register: getoutput
- name: grep the value of sports
debug: msg="{{ getoutput.json|json_query('parameters[?name=='sports'].value') }}"

它抛出问号错误..

`FAILED! => {"msg": "template error while templating string: unexpected char u'?'

我正在关注这里的文档 http://docs.ansible.com/ansible/latest/playbooks_filters.html#json-query-filter http://jmespath.org/tutorial.html ----过滤预测部分

另一方面,如果我用下面提到的行替换调试行。它可以工作,但它通过数组显示它,我不想用数组 ID 来 grep 任何内容。

debug: msg="{{ getoutput.json|json_query('parameters[0].value') }}"

请问你们中有人可以帮忙吗?

最佳答案

如果您查看链接到的文档页面,有一个示例:

- name: "Display all server names from cluster1"
debug: var=item
with_items: "{{domain_definition|json_query(server_name_cluster1_query)}}"
vars:
server_name_cluster1_query: "domain.server[?cluster=='cluster1'].port"

为什么它定义 server_name_cluster1_query 变量只是为了在上面两行使用它,而不是包含 "domain.server[?cluster=='cluster1'].port"直接在 with_items 中?

由于 with_items 中的整个模板必须加引号,因此查询必须加引号,字符串 cluster1 也必须加引号。

有单引号和双引号,但没有三引号。

<小时/>

让我们看一下您的示例:

msg="{{ getoutput.json|json_query('parameters[?name=='sports'].value') }}"

单引号中有两个字符串:parameters[?name==].value

双引号中的三个部分:{{ getoutput.json|json_query(, sports, and ) }}

它们放在一起没有意义,对吗?

关于jquery - 使用 Jquery (jmespath) 从 Ansible 获取 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47218038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com