NetDevOps
Обзор возможностей фреймворка
pyATS для тестирования состояния
сети на базе виртуальной
лаборатории Cisco Modeling Labs
Александр Горбачев
Консультант, NSALAB
Инструментарий NetDevOps
О чем будем
говорить? Моделирование сети с помощью
Cisco Modeling Labs
Метрики Абстрактные (включая плохие метрики, Конкретные (соответствие SLA, количество закрытых
производительности: такие как количество строк кода в день) заявок в Service Desk)
Необходимые навыки: Больше глубокие, чем широкие Больше широкие, чем глубокие
Тестирование, интеграция,
Непрерывность на всех стадиях развертывание, мониторинг,
обратная связь
Инструментарий NetDevOps
Системы контроля версий
hq2 = testbed.devices.HQ2
hq2.start_pool(alias = 'ssh_pool', via = 'ssh', size = 4)
Поддерживает протоколы hq2.ssh_pool.execute([
telnet, ssh и netconf 'show version',
'show ip interface brief',
'show ip eigrp neighbors',
'show ip ospf neighbors'
])
Поддерживает
параллельное подключение
и исполнение команд
Automation Easy Testing (AEtest)
Определяет модульную
структуру тестирования
Определяет логику
тестирования
Реализует поведение
юнит-тестов
Automation Easy Testing (AEtest)
# ./topology_test.py
Определяет модульную from pyats import aetest
структуру тестирования
class CommonSetup(aetest.CommonSetup):
@aetest.subsection
def connect_to_devices(self, testbed, steps):
for device in testbed.devices:
with steps.start('Connecting to %s' % device):
Определяет логику testbed.devices[device].connect()
тестирования
class CommonCleanup(aetest.CommonCleanup):
@aetest.subsection
def disconnect_from_devices(self, testbed, steps):
for device in testbed.devices:
Реализует поведение with steps.start('Disconnecting from %s' % device):
testbed.devices[device].disconnect()
юнит-тестов
Automation Easy Testing (AEtest)
# ./topology_test.py
Определяет модульную class Monitoring_and_backup(aetest.Testcase):
структуру тестирования
@aetest.test
def configuration_backup(self, testbed, steps):
with steps.start('Save config on HQ1’):
assert '!' in testbed.devices.HQ1.execute('write’)
with steps.start('Check backup on tftp server’):
assert testbed.devices.HQ1.hostname in
Определяет логику testbed.devices.RADIUS.execute("sudo ls /srv/tftp")
тестирования
@aetest.cleanup
def monitoring_and_backup_cleanup(self, testbed, steps):
with steps.start('Remove backups from tftp server’):
testbed.devices.RADIUS.execute("sudo rm -f /srv/tftp/*")
Реализует поведение
юнит-тестов
Automation Easy Testing (AEtest)
$ python topology_test.py --testbed default_testbed.yaml
работы (jobs)
Предоставляет удобный
интерфейс для вывода
результатов
Easypy
Стандартная среда
выполнения для тестовых
скриптов pyATS
Дает возможность
агрегировать скрипты в
работы (jobs)
Предоставляет удобный
интерфейс для вывода
результатов
Demo: Автоматизация проверки
состояния сети с помощью
фреймворка pyATS
Полезные линки
• Инфраструктура как код: обзор возможностей Ansible
для управления конфигурацией сетевой
инфраструктуры
• pyATS Documentation
• Unicon Documentation
• Genie Documentation
• Cisco DevNet Learning Labs
• NetDevOps Live!
• PCAP: Programming Essentials In Python
Полезные контакты
agorbachev@nsalab.org
facebook.com/menus12
t.me/a_gorbachev
Спасибо за внимание!