ansible - Ansible Jinja2 总是显示“已更改”
问题描述
我有一个用于 Cisco IOS 设备的 Jinja2 模板。目前我的剧本运行良好,但尽管没有明显变化,但始终显示“已更改”......我使用详细标签运行并收到下面的输出,但没有看到任何明显的东西。这是正常行为吗,如果不是,是否有人知道解决方法/更好的方法来完成此操作?
调试输出:
changed: [Parakoopa891F] => {
"banners": {},
"changed": true,
"commands": [
"interface Vlan 200",
"description DMZ created by Ansible",
"ip address 10.200.200.254 255.255.255.0",
"ip nat inside",
"ip virtual-reassembly",
"zone-member security INSIDE",
"no shutdown",
"interface Loopback 30",
"description Loopback created by Ansible",
"ip address 172.30.69.254 255.255.255.0",
"ip nat inside",
"ip virtual-reassembly",
"zone-member security INSIDE",
"no shutdown"
],
"invocation": {
"module_args": {
"after": null,
"backup": false,
"backup_options": null,
"before": null,
"defaults": false,
"diff_against": null,
"diff_ignore_lines": null,
"intended_config": null,
"lines": null,
"match": "line",
"multiline_delimiter": "@",
"parents": null,
"provider": null,
"replace": "line",
"running_config": null,
"save_when": "never",
"src": "interface Vlan 200\n description DMZ created by Ansible\n ip address 10.200.200.254 255.255.255.0\n ip nat inside\n ip virtual-reassembly\n zone-member security INSIDE\n no shutdown\n interface Loopback 30\n description Loopback created by Ansible\n ip address 172.30.69.254 255.255.255.0\n ip nat inside\n ip virtual-reassembly\n zone-member security INSIDE\n no shutdown\n "
}
},
"updates": [
"interface Vlan 200",
"description DMZ created by Ansible",
"ip address 10.200.200.254 255.255.255.0",
"ip nat inside",
"ip virtual-reassembly",
"zone-member security INSIDE",
"no shutdown",
"interface Loopback 30",
"description Loopback created by Ansible",
"ip address 172.30.69.254 255.255.255.0",
"ip nat inside",
"ip virtual-reassembly",
"zone-member security INSIDE",
"no shutdown"
]
}
剧本.yml
---
- name: "Set Router Configuration"
hosts: routers
connection: network_cli
tasks:
- name: "Apply router config"
ios_config:
src: "templates/{{ vendor }}_template.j2"
when: "'{{ vendor }}' == 'cisco'"
Jinja2 模板
interface Vlan 200
description {{ interfaces.vlans.dmz.description }}
ip address {{ interfaces.vlans.dmz.ip }}
ip nat {{ interfaces.vlans.dmz.nat }}
ip virtual-reassembly
zone-member security {{ interfaces.vlans.dmz.zone }}
{% if 'up' in interfaces.vlans.dmz.status %}
no shutdown
{% else %}
shutdown
{% endif %}
interface Loopback {{ interfaces.loopbacks.test.number}}
description {{ interfaces.loopbacks.test.description }}
ip address {{ interfaces.loopbacks.test.ip }}
ip nat {{ interfaces.loopbacks.test.nat }}
ip virtual-reassembly
zone-member security {{ interfaces.loopbacks.test.zone }}
{% if 'up' in interfaces.loopbacks.test.status %}
no shutdown
{% else %}
shutdown
{% endif %}
解决方案
推荐阅读
- vhdl - Finite State Machine with Its States Controlled by Two Processes
- json - 蟒蛇3 | 解析 JSON | 索引超出范围 | 无法访问数组的第一列
- python - 张量流中的训练精度下降
- multithreading - 从不同线程中的繁重操作同步写入文件
- java - playerMovement 的 ActionListener 或 Action
- c# - 在检索文档 REST API C# 时使用 Docusign 获得一个异常
- flutter - 自定义卡片形状 Flutter SDK
- javascript - Sonar javascript 静态代码分析 - 缺少 javascript riport。Maven项目
- c - 通过其子进程分析一个进程并在之后杀死该子进程
- mysql - 如何根据不同的连接表条件从不同的表中获取值