ios_config
ansible-role-ios_config
Ansible Роль для Конфигурации Cisco IOS
Текущие Задачи:
- Определение сервера Radius
- Глобальные настройки ISE/802.1x
- Конфигурация датчика устройства
- Конфигурация интерфейса 802.1x (частично, логика выбора интерфейса отсутствует)
- Рабочий процесс PnP ZTP
Возможности:
- Подключение через Bastion/Jumphost на основе переменной инвентаря
- Переключение с Paramiko на libssh
Что сделать:
- Доверенный интерфейс DHCP Snooping
- Возможно конфигурация ISE (ND, NDG)
- Интеграция с:
- Уточнение рабочего процесса PnP ZTP
- И другие общие задачи
Требования
Определение сервера Radius:
- IP-адрес
- Имя хоста
- Radius-ключ
- Интерфейс источника Radius
Определение интерфейса
- VLAN доступа
- Резервный VLAN (необязательно)
- VLAN для голоса (необязательно)
- Режим низкого влияния (необязательно)
Переход на LibSSH
Использование модуля libssh (в настоящее время только для Linux)
pip3 install ansible-pylibssh
Переключение на libssh для этой роли
# roles/ios_config/default.yml
ansible_network_cli_ssh_type: libssh
Добавьте следующее в ansible.cfg для глобального активации
# ansible.cfg
[persistent_connection]
ssh_type = libssh
Подключение к Bastion/Jumphost
Чтобы использовать Bastion/Jumphost для подключения к сетевым устройствам, создайте:
# inventory/group_vars/all/ansible_ssh.yml
ansible_ssh_proxy_command: >-
{% if bastion_host is defined and bastion_host != '' %}
ssh {{ hostvars[bastion_host]['ansible_user'] }}@{{ hostvars[bastion_host]['ansible_host'] }}
-o Port={{ hostvars[bastion_host]['ansible_ssh_port'] | default(22) }}
-W %h:%p
{% endif %}
ansible_ssh_common_args: >-
{% if bastion_host is defined and bastion_host != '' %}
-o ProxyCommand="{{ ansible_ssh_proxy_command }}"
{% endif %}
# По умолчанию bastion host для всех хостов
bastion_host: ""
добавьте bastion_host: "ваш-хост"
в переменные вашего инвентаря/группы, где должен использоваться Jumphost. Jumphost должен быть определён в инвентаре.
Пример
# inventory/group_vars/ios.yml
---
ansible_user: admin
ansible_network_os: ios
bastion_host: tux01
# inventory/<inventoryfile>
[debian]
tux01 ansible_host=tux01.example.org
[debian:vars]
ansible_user=tux
ansible_become_method=sudo
Переменные Роли
- fact_gather_enabled
- по умолчанию true
- push_config
- определяет, нужно ли отправлять конфигурацию на устройство или сохранять различия конфигурации локально
- ios_int_config_enabled
- включает конфигурацию интерфейса
- ios_sensor_config_enabled
- включает конфигурацию датчика IOS
- ios_1xglobal_config_enabled
- включает глобальную конфигурацию IOS ISE/802.1x
- int_global_config_enabled
- включает конфигурацию интерфейса 802.1x
- pnp_config_enabled
- включает генерацию конфигураций PnP, должно использоваться с fact_gather_enabled: false
Зависимости
Роли: нет
Сборка:
- cisco.ios
- ansible.netcommon
Пример Playbook
Что сделать
- name: example
hosts: csw02
gather_facts: false
connection: network_cli
roles:
- { role: ios_config, ios_config_enabled: false, ios_sensor_config_enabled: true, ios_1xglobal_config_enabled: true }
Лицензия
GPL-3.0-or-later
Информация о авторе
oliverl-21
Установить
ansible-galaxy install oliverl-21/ansible-role-ios_config
Лицензия
Unknown
Загрузки
93
Владелец
nothing to tell