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

О проекте

Cisco IOS Configuration role

Установить
ansible-galaxy install oliverl-21/ansible-role-ios_config
Лицензия
Unknown
Загрузки
95
Владелец
nothing to tell