система_управления_конфигурациями_ansible_и_cisco

This is an old revision of the document!


Система управления конфигурациями Ansible и Cisco

Семинар - реклама курса: Linux. Уровень 7. Мониторинг оборудования и интеграция с решениями Cisco

Хэштеги: Linux, Cisco, Ansible, Fail2ban, Git

Реклама вебинара

Что может объединить такие, казалось бы различные программные продукты как Ansible и Fail2ban? Да как и обычно в UNIX-way - каждый будет делать что-то свое и делать это хорошо! Добавим сюда еще Git, и получим симпатичную систему резервного копирования конфигураций оборудования Cisco.

Шаг 1. Исходное состояние стенда

rm /root/.ssh/known_hosts

ping ya.ru
  • Коммутаторы switch1, switch2, switch3, …
en

conf t

hostname switchN

interface VLAN1
 ip address 192.168.43.N+2 255.255.255.0
 no shutdown

no ip domain lookup

ip host server 192.168.43.10

ip domain-name corp43.un
crypto key generate rsa general-keys modulus 1024
ip ssh version 2

username root privilege 15 secret cisco

line vty 0 4
login local
transport input ssh

end
wr

Проверки

server.corp43.un:~# ssh switchN

Шаг 2. Постановка задач и ретроспектива вариантов их решения

Задачи и известные решения

Задача 1 - автоматическое резервное копирование конфигураций

Задача 2 - протоколирование версий конфигураций

Задача 3 - изменения конфигурации множества устройств cisco

Известные комплексные решения

Задача 1 и 2, плюс мониторинг факта изменения конфигурации

Задача 2 и 3

Шаг 3. Использование scp для автоматизации резервного копирования конфигурации

Копирование конфигурации через удаленное выполнение команд

server.corp43.un:~# apt install tftpd && mkdir /srv/tftp/

server.corp43.un:~# ssh switch1 "show running-config" > /srv/tftp/switch1-running-config

switch1#more tftp://server/switch1-running-config

Копирование конфигурации командой scp

!!! Требуется массовое изменение конфигураций

server.corp43.un:~# scp switch2:running-config /srv/tftp/switch2-running-config
  • Для автоматизации подключения к устройствам может копирование на них открытого ключа ssh сервера или автоматическая Парольная аутентификация клиента ssh
server.corp43.un:~# sshpass -p cisco ssh switchN "show run"

server.corp43.un:~# sshpass -p cisco scp switchN:running-config /srv/tftp/switchN-running-config

Шаг 4. Использование git для протоколирования версий конфигураций

Шаг 5. Использование ansible для управления конфигурациями

Простой вариант - изменение конфигурации командой scp

  • !!! tftp больше не нужен :)
  • Например, отключим scp :)
server.corp43.un:~# cat cisco_change_conf.txt
no ip scp server enable
end
server.corp43.un:~# sshpass -p cisco scp cisco_change_conf.txt switchN:running-config
  • Недостатки этого способа … и, отсутствие идемпотентности ??? :)

Используем ansible

  • Разворачиваем и тестируем Сервис Ansible с использованием модуля ios_command

Шаг 5. Использование fail2ban для отслеживания факта изменения и бекапа конфигурации

# cat /root/backup_cisco_conf.sh
#!/bin/sh

CISCONAME=`host ${1} | cut -d' ' -f5 | cut -d'.' -f1`

echo $CISCONAME

/usr/bin/sshpass -p cisco /usr/bin/scp ${CISCONAME}:running-config /srv/tftp/${CISCONAME}-running-config

cd /srv/tftp/

/usr/bin/git add *

/usr/bin/git commit -a -m `date '+%Y-%m-%d_%H:%M:%S'`
# cat /etc/fail2ban/action.d/cisco-backup-config.conf
[Definition]

actionban = /root/backup_cisco_conf.sh <ip> >/dev/null 2>&1

Шаг 6. Добавляем новое оборудование

  1. Базовая конфигурация
  2. До настройка через ansible
  3. Проверка наличия резервной копии

Домашние задания

  1. Найти, как использовать hostname узла вместо его ip в fail2ban actions или, что-то читающее логи вместо f2b
  2. Найти решение идемпотентности для модуля ansible ios_config
  3. Использовать модули ansible вместо scp
система_управления_конфигурациями_ansible_и_cisco.1565864939.txt.gz · Last modified: 2019/08/15 13:28 by val