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

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

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

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

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

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

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

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

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

Задача 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
  • Для автоматизации подключения к устройствам может копирование на них открытого ключа ssh сервера или автоматическая Парольная аутентификация клиента ssh
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

  • !!! tftp больше ВООБЩЕ не нужен :)
  • Например, отключим scp через 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

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

Шаг 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
система_управления_конфигурациями_ansible_и_cisco.txt · Last modified: 2019/09/02 12:10 by val