Как использовать Ansible для управления сетевыми маршрутизаторами
Создание простого плейбука для управления маршрутизаторами
Плейбук — это YAML-файл, в котором описаны задачи для выполнения на одном или нескольких устройствах. Основной принцип работы Ansible — выполнение задач без необходимости устанавливать агенты на целевых устройствах.
Пример простого плейбука для проверки конфигурации маршрутизатора:
---
- name: Проверка конфигурации маршрутизатора
hosts: routers
gather_facts: no
tasks:
- name: Проверить текущую конфигурацию
ansible.netcommon.cli_command:
command: show running-config
register: config_output
- name: Показать конфигурацию
debug:
var: config_output.stdout
В этом плейбуке используется модуль cli_command, который позволяет выполнять команды на устройствах. Результаты сохраняются в переменной config_output, а затем выводятся с помощью модуля debug.
Настройка и применение конфигурации
Ansible позволяет не только просматривать конфигурацию, но и изменять ее. Например, можно изменить настройки интерфейса или создать новые маршруты.
Пример плейбука для настройки интерфейса:
---
- name: Настройка интерфейса на маршрутизаторе
hosts: routers
gather_facts: no
tasks:
- name: Настроить интерфейс GigabitEthernet0/1
ansible.netcommon.cli_config:
lines:
- interface GigabitEthernet0/1
- ip address 192.168.10.1 255.255.255.0
- no shutdown
В этом плейбуке модуль cli_config используется для внесения изменений в конфигурацию маршрутизатора. Он добавляет строки конфигурации на устройство, обеспечивая автоматизацию процессов без вмешательства вручную.
Пример работы с плейбуками: вы также можете использовать переменные для повышения гибкости плейбуков. Например, определите IP-адреса в отдельном файле vars.yml:
interface_ip: 192.168.20.1
subnet_mask: 255.255.255.0
И модифицируйте плейбук для использования этих переменных:
---
- name: Настройка интерфейса с переменными
hosts: routers
gather_facts: no
vars_files:
- vars.yml
tasks:
- name: Настроить интерфейс
ansible.netcommon.cli_config:
lines:
- interface GigabitEthernet0/2
- ip address {{ interface_ip }} {{ subnet_mask }}
- no shutdown
Управление конфигурацией и проверка изменений
После внесения изменений важно убедиться, что конфигурация была применена правильно и не вызвала проблем. Для этого вы можете использовать дополнительные задачи проверки и резервного копирования.
Пример резервного копирования конфигурации:
---
- name: Резервное копирование конфигурации маршрутизатора
hosts: routers
gather_facts: no
tasks:
- name: Сохранить текущую конфигурацию в файл
ansible.builtin.copy:
src: running-config
dest: /backup/configs/{{ inventory_hostname }}.cfg
В этом примере модуль ansible.builtin.copy используется для создания резервной копии текущей конфигурации устройства.
Комментарии