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

How to get a specific line from Ansible nested register output

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

剧本如下,

---
- 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" 并将此值存储在另一个列表中。

关于如何只获取那条线的任何想法?

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

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