如何从 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'] }}"
所以我试图从 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'] }}"