Table of Contents

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

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

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

Видеозапись: https://youtu.be/zUi4lTd5WHc

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

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

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

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, плюс мониторинг факта изменения конфигурации

Задача 1, 2 и 3

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

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

server.corp43.un:~# ssh switch1 "show running-config"

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
server.corp43.un:~# sshpass -p cisco ssh switch1 "show run"

server.corp43.un:~# rm /srv/tftp/switch2-running-config

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

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

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

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

server.corp43.un:~# cd /root/

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

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

# host switch1

# host 192.168.43.3

# 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'`
# cd /srv/tftp/

# rm switch1-running-config

# /root/backup_cisco_conf.sh 192.168.43.3
# cat /etc/fail2ban/action.d/cisco-backup-config.conf
[Definition]

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

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

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

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

  1. Найти, как использовать hostname узла вместо его ip в fail2ban actions или, что-то читающее логи вместо f2b
  2. Найти решение идемпотентности для модуля ansible ios_config
  3. Использовать модули ansible вместо scp