#ansible #network-programming #jinja2 #cisco-ios
#ansible #сетевое программирование #jinja2 #cisco-ios
Вопрос:
У меня есть шаблон Jinja2, который я использую для устройств Cisco IOS. В настоящее время мой сборник пьес работает нормально, но всегда показывает «изменено», несмотря на отсутствие очевидных изменений… Я запустил с подробным тегом и получил вывод ниже, но не увидел ничего очевидного. Является ли это нормальным поведением, и если нет, знает ли кто-нибудь обходной / лучший способ добиться этого?
Вывод отладки:
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 200n description DMZ created by Ansiblen ip address 10.200.200.254 255.255.255.0n ip nat insiden ip virtual-reassemblyn zone-member security INSIDEn no shutdownn interface Loopback 30n description Loopback created by Ansiblen ip address 172.30.69.254 255.255.255.0n ip nat insiden ip virtual-reassemblyn zone-member security INSIDEn no shutdownn "
}
},
"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"
]
}
playbook.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 %}
Комментарии:
1. Я не могу сразу сказать, относится ли это к вам, но есть подозрительно актуальная запись часто задаваемых вопросов о всегда измененных задачах
2. Исправьте условие
when: vendor == "cisco"
3. Попытался изменить синтаксис, но результат тот же. Способ, которым он указан в моем вопросе, все еще функционирует.