【问题标题】:GET API Call from Ansible using Jquery (jmespath)使用 Jquery (jmespath) 从 Ansible 获取 API 调用
【发布时间】:2018-04-23 09:40:02
【问题描述】:

Ansible 中的 Jquery 不适合我。这是场景。

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

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

现在我想了解运动的价值。这是我的剧本

- 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') }}"

问号报错..

`失败! => {"msg": "模板化字符串时出现模板错误: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') }}"

你们中的任何人都可以帮忙吗?

【问题讨论】:

  • 向你的橡皮鸭解释每个引号的含义。然后应用您链接到的 Ansible 文档中显示的机制。

标签: jquery python json api ansible


【解决方案1】:

如果你看一下你链接到的文档页面,有一个例子:

- 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变量只在上面两行使用,而不是直接在with_items中包含"domain.server[?cluster=='cluster1'].port"

因为with_items中的整个模板必须被引用,所以查询必须被引用,字符串cluster1也必须被引用。

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


让我们看看你的例子:

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

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

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

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

【讨论】:

  • 非常感谢。有用。 !你是一个救生员。你太棒了:)
  • 根据@techraf 的建议,我添加了引号并且它起作用了。 :) 这是我替换调试的行: msg="{{ restdata.json|json_query("parameters[?name=='sssd_user'].value") }}"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多