问题描述
我有一个任务,该任务将从开关返回的输出分配给变量,然后下一个任务通过jinja2模板运行输出:
- name: CHECKING SPANNING-TREE STATE
nxos_command:
commands:
- show spanning-tree
provider: "{{ nxos_provider }}"
register: stp
- name: RUN OUTPUT THROUGH TEMPLATE THEN WRITE OUTPUT TO FILE
template:
src: /sandbox/git/net/ansible/roles/template/templates/stp.j2
在Jinja2模板中,我可以使用下面的逻辑轻松地遍历“ TABLE_tree.ROW_tree”,但是当我尝试遍历“ TABLE_port.ROW_port”时,在Ansible中会出现“ undefinedvariable”错误。只是不确定如何为每个“ TABLE_tree.ROW_tree”遍历嵌套字典(TABLE_port.ROW_port)。任何帮助将不胜感激。
工作逻辑代码段:
{% for tree in stp.stdout_lines[0].TABLE_tree.ROW_tree %}
VLAN{{ tree.tree_id }}:
Root Bridge Priority: {{ tree.tree_designated_root_priority }}
逻辑中断:
{% for interface in stp.stdout_lines[0].TABLE_tree.ROW_tree.TABLE_port.ROW_port. %}
INTERFACES STATES:
Interface {{ interface.if_index }}
Role: {{ interface.role }}
State: {{ interface.state }}
------------------------------------------------------
{% endfor %}
stdout_lines示例:
{
"TABLE_tree": {
"ROW_tree": [
{
"tree_id": "1","tree_tree_type": "vlan","tree_protocol": "rstp","port_count": "1","bridge_mac": "0027.e3b1.23bc","bridge_priority": "32769","tree_designated_root": "001c.7369.3b17","tree_designated_root_priority": "32768","stp_active": "enabled","root_path_cost": "2002","root_port_if_index": "Ethernet1/11","root_port_priority": "128","root_port_number": "139","topology_change": "false","topology_change_detected": "false","topology_change_count": "5","topology_change_time_since_last": "2610361","tc_initiator_if_index": "Ethernet1/42","bridge_forward_delay": "15","bridge_max_age": "20","bridge_hello_time": "2","max_age": "20","hello_time": "2","fex_hello_time": "12","forward_delay": "15","hold_time": "1","hello_timer": "0","topology_change_timer": "0","tcn_timer": "0","aging_timer": "0","disabled": "0","blocking": "0","listening": "0","learning": "0","forwarding": "1","invalid": "0","TABLE_port": {
"ROW_port": {
"if_index": "Ethernet1/11","port_info_tree_id": "1","state": "forwarding","role": "root","port_priority": "128","port_number": "139","port_protocol": "rstp","port_tree_type": "vlan","path_cost": "2","port_designated_root": "001c.7369.3b17","port_designated_root_priority": "32768","designated_cost": "2000","designated_bridge": "001c.731e.9996","designated_bridge_priority": "32769","designated_port": "32791","tc_acknowledge": "false","forward_transition_count": "1","self_looped": "false","inconsistency": "0","bpdus_in": "7771654","bpdus_out": "9","port_fast": "default1","link_type": "auto","port_guard": "default1","bpdu_guard": "default1","bpdu_filter": "default1","oper_portfast": "false","oper_p2p": "true","oper_loopguard": "false","oper_bpduguard": "false","oper_bpdufilter": "false","int_bpdufilter": "false","oper_networkport": "false","forward_delay_timer": "0","hold_timer": "0","message_age": "16","peer": "rstp","dispute": "false"
}
}
},{
"tree_id": "123","bridge_priority": "24699","tree_designated_root": "0027.e3b1.23bc","tree_designated_root_priority": "24699","root_path_cost": "0","root_port_if_index": null,"root_port_priority": "0","root_port_number": "0","topology_change_count": "1","topology_change_time_since_last": "34183","tc_initiator_if_index": "Ethernet1/38","TABLE_port": {
"ROW_port": {
"if_index": "Ethernet1/38","port_info_tree_id": "123","role": "designated","port_number": "166","port_designated_root": "0027.e3b1.23bc","port_designated_root_priority": "24699","designated_cost": "0","designated_bridge": "0027.e3b1.23bc","designated_bridge_priority": "24699","designated_port": "32934","bpdus_in": "0","bpdus_out": "17107","message_age": "0",{
"tree_id": "800","port_count": "11","bridge_priority": "800","tree_designated_root_priority": "800","topology_change_count": "183","topology_change_time_since_last": "105428","tc_initiator_if_index": "Ethernet1/27","forwarding": "11","TABLE_port": {
"ROW_port": [
{
"if_index": "Ethernet1/1","port_info_tree_id": "800","port_number": "129","port_designated_root_priority": "800","designated_bridge_priority": "800","designated_port": "32897","bpdus_out": "7775885","port_fast": "enable","dispute": "false"
},{
"if_index": "Ethernet1/2","port_number": "130","designated_port": "32898",
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)