Ansible提取JSON标签

时间:2018-07-31 12:17:09

标签: json ansible

我正在尝试使用Infoblox API,它是响应。我需要从响应中提取标签的值,该值似乎是JSON格式,但是我找不到解决方法。

这是我的剧本:

Timer.scheduledTimer(timeInterval: 30, target: self, selector: #selector(YourFuncName), userInfo: nil, repeats: true)

_infoblox_results.json变量如下所示:

@objc func YourFuncName() {
      print("every 30seconds")
}

我想使用来自- name: "Checking _node_exporter Service Record for {{ inventory_hostname }}" local_action: module: uri url: "{{ infobloxapiurl }}record:srv?name=_node_exporter.domain.com&target={{ inventory_hostname }}" force_basic_auth: yes user: "{{ infobloxuser }}" password: "{{ infobloxpassword }}" validate_certs: no return_content: yes register: _infoblox_results - debug: var: _infoblox_results.json 的{​​{1}}的数据,但是我无法使用TASK [prometheus : debug] ******************************************************************************************************************************************************************************************* task path: /ansible/roles/tasks/task.yml:38 ok: [server.domain.com] => { "_infoblox_results.json": [ { "_ref": "record:srv/ZG5zLmJpbmRfc3J2JC5fZGVmYXVsdC5jb20udmNpbnQuZXcxL19ub2RlX2V4cG9ydGVyLzAvMC85MTAwL3Zhcm5pc2g3MDJ0c3QuZXcxLnZjaW50LmNvbQ:_node_exporter.domain.com/default", "name": "_node_exporter.domain.com", "port": 9100, "priority": 0, "target": "server.domain.com", "view": "default", "weight": 0 } ] } 提取它(它会回退完整的_ref):

_infoblox_results.json

regex_replace都不起作用(它不会掉线):

_infoblox_results.json

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您的内存中已经有一个对象,因此只需引用其值即可:_infoblox_results.json[0]._ref包含字符串record:srv/ZG5zLmJpbmRfc3J2JC5fZGVmYXVsdC5jb20udmNpbnQuZXcxL19ub2RlX2V4cG9ydGVyLzAvMC85MTAwL3Zhcm5pc2g3MDJ0c3QuZXcxLnZjaW50LmNvbQ:_node_exporter.domain.com/default

有了它,您可以分割字符串并选择第二个元素:

- name: Get Record ID
  set_fact:
    _rcdid: "{{ _infoblox_results.json[0]._ref.split('/')[1] }}"