Ansible + Cisco идемпотентность
Поэтому я провожу некоторое тестирование с Ansible для управления устройствами Cisco (в частности, 3750 в данном случае). Я могу добавить свои VLAN и Loopbacks без проблем.
Просто пытаюсь заставить Ansible остановить регистрацию изменения в задаче, когда существует Loopback или VLAN.
Прямо сейчас моя игра выглядит так:
- name: Set the IP for Loop 0
ios_config:
provider: "{{ connection }}"
lines:
- description AnsibleLoop0
- ip address 8.8.8.8 255.255.255.0
before:
- interface Loopback0
match: exact
Каждый раз, когда запускается эта задача, Ansible регистрирует ее как изменение:
changed: [switch] => {"changed": true, "updates": ["interface Loopback0", "description AnsibleLoop0", "ip address 8.8.8.8 255.255.255.0"], "warnings": []}
Я пробовал разные match
типы (line, exact
) но безрезультатно. Может быть, я здесь что-то не так.
Я думал, что если бы у меня была пьеса, вставьте строки в точности так, как они будут отображаться в show run
это не зарегистрирует это как изменение?
Любая помощь здесь будет оценена!
2 ответа
Вы можете столкнуться с этой проблемой:
https://github.com/ansible/ansible/pull/24345
Сохраняете ли вы изменения конфигурации каждый раз на устройстве Cisco, используя save: "yes”
в твоей пьесе? У меня была та же проблема, и я сохранял конфигурацию каждый раз, когда запускалась книга воспроизведения. Установка этого в no
просто для проверки, после первого запуска отчетов changed=True
последовательные прогоны сообщат changed=False
по Ansible.
Я знаю, что эта тема была давно закрыта, но у меня была такая же проблема, и я нашел, что ее вызывает.
Я настраиваю интерфейсы L3, используя файл json в качестве источника, в котором я не осознавал, что использовал значение имени интерфейса в верхнем регистре, например: Loopback123
Это результат при использовании этого:
изменено: [NX-SPINE-2] => (item={'interface': 'Loopback123', 'ip': '123.1.2.8/32', 'description': 'Loopback interface for Ansible Testing'}) изменено: [NX-SPINE-1] => (item={'interface': 'Loopback123', 'ip': '123.1.2.7/32', 'description': 'Loopback interface for Ansible Testing'}) изменено: [NX-LEAF-3] => (item={'interface': 'Loopback123', 'ip': '123.1.2.5/32', 'description': 'Loopback interface for Ansible Testing'}) изменено: [NX-LEAF-2] => (item={'interface': 'Loopback123', 'ip': '123.1.2.4/32', 'description': 'Loopback interface for Ansible Testing'}) изменено: [NX-LEAF-4] => (item={'интерфейс': 'Loopback123', 'ip': '123.1.2.6/32', 'описание': 'Интерфейс обратной петли для тестирования Ansible'})
ОБЗОР ИГРЫ ******************************************************* ******************************************************* ******************************************************* NX-LEAF-1 : ok=2 изменено=1 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0 NX-LEAF-2 : ok=2 изменено=1 недоступно=0 не удалось=0 пропущено=0 спасено= 0 проигнорировано=0 NX-LEAF-3 : ok=2 изменено=1 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0 NX-LEAF-4 : ok=2 изменено=1 недоступно=0 не удалось=0 пропущено =0 спасено=0 проигнорировано=0 NX-SPINE-1 : ok=2 изменено=1 недоступно=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0 NX-SPINE-2 : ok=2 изменено=1 недоступно=0 не удалось = 0 пропущено = 0 спасено = 0 проигнорировано = 0
Это связано с тем, что имя интерфейса на самом деле отличается от того, как устройство обрабатывает и отображает имя обратно при отображении конфигурации.
интерфейс loopback0 описание Управление — пиринг BGP
Как только я исправил имя интерфейса в нижнем регистре в исходном файле, это решило для меня проверку идемпотентности.
ok: [NX-LEAF-4] => (item={'interface': 'loopback123', 'ip': '123.1.2.6/32', 'description': 'Loopback interface for Ansible Testing'})ok: [NX-LEAF-3] => (item={'interface': 'loopback123', 'ip': '123.1.2.5/32', 'description': 'Loopback interface for Ansible Testing'})
ОБЗОР ИГРЫ ******************************************************* ******************************************************* ******************************************************* NX-LEAF-1 : ok=2 изменено=0 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0 NX-LEAF-2 : ok=2 изменено=0 недоступно=0 не удалось=0 пропущено=0 спасено= 0 проигнорировано=0 NX-LEAF-3 : ok=2 изменено=0 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0 NX-LEAF-4 : ok=2 изменено=0 недоступно=0 не удалось=0 пропущено =0 спасено=0 проигнорировано=0 NX-SPINE-1 : ok=2 изменено=0 недоступно=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0 NX-SPINE-2 : ok=2 изменено=0 недоступно=0 не удалось = 0 пропущено = 0 спасено = 0 проигнорировано = 0
Надеюсь, поможет.
Ваше здоровье!