首页 > 解决方案 > 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 %}

标签: ansiblenetwork-programmingjinja2cisco-ios

解决方案


推荐阅读