如何从Ansible嵌套寄存器输出中获取特定行

时间:2019-05-23 09:08:22

标签: ansible yaml ansible-inventory ansible-facts

所以我试图从Ansible寄存器输出中获取特定的行/行。但是由于我的输出是安静的嵌套,所以我似乎无法获得所需的正确值。

Playbook如下,

---
- name: Get some piece of information
  *some Ansible module*:
    epg_info: First_EPG 
    state: query
  register: epg_info

- debug:
    var: epg_info
...

因此,您看到我使用Ansible提供的网络模块来查询“ First_EPG”的信息并将其注册在epg_info中。接下来,我对其进行调试,这是我得到的内容,

ok: [... . ... . ... . ...] => {
    "epg_info": {
        "changed": false,
        "msg": "All items completed",
        "results": [
            {
                "_ansible_ignore_errors": null,
                "changed": false,
                "current": [
                    {
                        "fvAEPg": {
                            "attributes": {
                                "annotation": "",
                                "dn": "THIS IS THE LINE I WANT TO HAVE",
                                "exceptionTag": "",
                                "extMngdBy": "",
                            },
                    }
                  } 
                } 
              } 
            } 

不要介意“ {}”的数量,因为该列表要长得多,我只是为了便于使用而将其范围缩小了。

如您所见,列表是安静的嵌套,并且我想要的唯一一行是“ dn”,并将此值存储在另一个列表中。

关于我如何只能获得那条线的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以使用索引来获取该值:

    - name: fetch value
      debug:
        msg: "{{ epg_info['results'][0]['current'][0]['fvAEPg']['attributes']['dn'] }}"