Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
CiscoConnectМосква, 2017
Цифровизация: здесь и сейчас
Программируемость коммутаторов для ЦОД Cisco Nexus
Александр Скороходов
Инженер-консультант
© 2017 Cisco and/or its affiliates. All rights reserved.
Цели сессииДля двух типов аудитории
Для сетевых администраторов:
• Показать, как программируемость сети может сделать их работу проще и эффективнее
• Продемонстрировать возможности расширения функциональности
• Перестать бояться программирования
• Помочь найти общий язык с программистами ;)
Для программистов:
• Показать возможности использования Nexus как открытой программируемой платформы
• Описать ключевой инструментарий программирования для работы с сетевым оборудованием Cisco для ЦОД
• Помочь найти общий язык с сетевыми администраторами ;)
Для сетевых администраторов и программистов:
Возможность объединения усилий в рамках DevOps модели разработки,
внедрения и эксплуатации
Источние: исследование Cisco, 2016
Традиционные подходы не успевают за требованиями «цифрового бизнеса»
Зачем автоматизировать сеть?
Затрат на
эксплатацию сети
уходит на
диагностику и
устранение проблем
75%
Нарушений политики безопасности из-за
«человеческого фактора»
70%
Сетевых изменений выполняются
вручную
95%
Что даёт программируемость?
Экономия времени
Кастомизация Новые возможности
Снижение числа ошибок
Модели эксплуатации сети
Управление отдельными устройствами
• CLI
• Порты, VLAN, протоколы...
• Привычно
• Хорошо документировано
• Медленно – “несколько недель на создание VLAN???”
• Подвержено ошибкам
• Классические NMS мало помогают
• Сеть воспринимается как тормоз ИТ!
Чем будет заниматься сетевой инженер будущего ?
Автоматизация и
программирование
• Скрипты, API, Chef/Puppet…
• «Управлять коммутаторами
так же, как серверами»
• DevOps модель
• Высокая скорость
развертывания и внесения
изменений
• Единый инструментарий
управления разными
элементами среды
• Новый набор навыков
• Кто будет отвечать за сеть?
Оркестрация и управление
по политикам
• Системы оркестрации
• ACI: OpFlex, Group-based
Policy…
• Развёртывание и
эксплуатация сети в контексте
приложения/сервиса
• «Сеть как сервис»
• Единая точка
программируемости
• Новый набор навыков
• Миграция?
Спектр технологий программируемости и расширения функциональных возможностей
Bash +
netdevices
Guest
Shell
Открытая
системаЗакрытая
система
Сторонние
RPM
Скриптинг на Python
POAP/
PXE EEMNX-API
CLINX-APIREST
Puppet/
Chef/AnsibleCLI
Open NX-OSЗагрузка образа ОС: iPXE
VTEP VTEP VTEP VTEP
Использование существующей ИТ
инфраструктуры (PXE/iPXE) для
поддержки NX-OS
Загрузчик в BIOS на основе gPXE
Загрузка NX-OS с сервера по
HTTP/HTTPS или TFTP с поддержкой
IPv4 и IPv6
Добавлена настройка в NX-OS CLI для
выбора источника загрузки: <bootflash>
(GRUB) или <pxe> (GPXE)
Boot Server(DHCP & HTTP/TFTP)NX-OS Image Repository
DHCP DISCOVER(v4/v6)
IP Address & File/Image URL
TFTP GET FILE/HTTP URL
http://n9k-dk9….bin..
Validate Image Checksum & Boot
Script Server
Коммутатор Nexus
DHCP Server
Download Script file onto the switch and execute the script
DHCP Discover phase:Get IP Address, GatewayScript server Script file
Download Configuration License Software images onto the switch
2
3
4
Default Gateway
1Power up Phase: Start Power On Auto-Provisioning Process
License, Configuration and Software Server
5
Reboot if needed. Switch up and running the downloaded image
and config
POAP (Power-on Auto Provisioning)Быстрое развёртывание коммутаторов
Сокращение времени и трудоёмкости
первоначального развёртывания
Автоматизация, стандартизация и
воспроизводимость конфигураций
Использует DHCP и TFTP
(альтернатива: USB)
Скрипт на Python или TCL script –
есть шаблон на cisco.com
Конфигурационный файл и образ
NX-OS
Выполняется при пустой конфигурации
или настройке «boot poap enable»
На всех семействах Nexus
(N3K/N5K/N7K/N9K)
DCNM on CCOhttp://www.cisco.com/go/dcnm
POAP (Power-on Auto Provisioning)Упрощение внедрения с помощью DCNM...
Упрощение внедрения POAP
Графический интерфейс
Готовый сервер в виде .OVA
Возможность генерации конфигураций на основе топологии, шаблонов и скриптов
Инструмент с открытым исходным кодом –возможности доработки, расширения и интеграции
https://github.com/datacenter/ignite
POAP (Power-on Auto Provisioning)...или с помощью Ignite
Nexus 3/9k only
Embedded Event Manager (EEM)«Программирование без программирования»
Отслеживает события и инициирует
действия
Поддерживается в IOS, IOS-XR и NX-OS
Политики по умолчанию работают «в фоне»
для поддержания здоровья коммутатора
Примеры событий:
Изменения оборудования (замена модуля)
Изменения статуса интерфейса
Команды администратора
Syslog сообщения
Диагностированные отказы (GOLD)
Примеры действий:
Отправка SNMP Trap
Генерация Syslog сообщения
Запуск скрипта на Python
event manager applet writer
event cli match “copy running-config startup-config”
action 1 syslog msg hi
action 2 cli copy running
bootflash:/autoconfig/running.latest
action 3 cli guestshell run sudo su - temp -c
'/home/temp/tester.py'
EEM
f = os.popen('mv -f /bootflash/autoconfig/running.latest/bootflash/autoconfig/running')
who = f.read()
f.close
print "Result:", who
f = os.popen('cd /bootflash/autoconfig;
/bootflash/git add running')
who = f.read()
f.close
print "Result:", who
…
Python
Встроенный интерпретатор Python
# python
Python 2.7.2 (default, Mar 6 2012, 15:51:12)
[GCC 3.4.3 (MontaVista 3.4.3-25.0.143.0800417 2008-02-22)] on
linux2
Type "help", "copyright", "credits" or "license" for more
information.
Loaded cisco NxOS lib!
>>>
Interactive Python Shell
# python bootflash:showBuffer.py
Mon Jan 30 19:26:36 UTC 2012
|------------------------------------------------------------
|
Total Instant Usage 0
Remaining Instant Usage 46080
Max Cell Usage 0
Switch Cell Count 46080
|------------------------------------------------------------
|
Mon Jan 30 19:26:38 UTC 2012
#
Run Python Script
• Почему Python?• Простота изучения• Выразительность• Интерактивный режим и
скриптинг• Огромный выбор модулей• «Язык DevOps»
• Варианты использования Python на Nexus:
• NX-OS CLI• EEM• Guest shell• Bash shell
• Полезные встроенные модули:• cli• cisco
• Возможность создавать «суперкоманды»
NX-API CLIПрограммный доступ к CLI современными средствами
• Взаимодействие с CLI устройства через HTTP / HTTPS• Обмен в JSON или XML формате для удобства программирования
Show Clock NXAPI Web Server
(NGINX)
[{"jsonrpc": "2.0","method": "cli","params": {"cmd": "show clock","version": 1
},"id": 1
}]
{"jsonrpc": "2.0","result": {"body": {"simple_time": "15:00:37.762 PST Mon Aug 18 2014\n"
}},"id": 1
}
HTTP / HTTPS
Switch# conf tSwitch(config)# feature nxapiSwitch(config)# exit
NX-API CLIВстроенная в коммутатор «песочница» (Sandbox)
• Удобная «стартовая площадка» с Web-интерфейсом для сетевых администраторов, интересующихся скриптингом/автоматизацией
• Генерация «обёртки» для CLI команд, отправка коммутатору по HTTP/HTTPSи показ возвращаемых структурированных результатов (JSON/XML)
• Генерация готового кода на Python!
• Встроенная документация
REST API для доступа к объектной модели управления Nexus
Автоматизация управления с использованиемопераций (CRUD) над иерархией объектов (MIT)
Асинхронное управление средствами модели:
BGP, VLAN, LACP, ACL, QoS, UDLD, CDP, MAC, DHCP, DNS, RBAC, AAA,SVI, Logging, NTP, VRRP
Возможность подписки на уведомления о событиях на уровне объекта или ветви иерархии с помощью Websockets
Преимущества использования объектной модели
Ускорение разработки ПО
Повышение качества ПО
Интеграция в ООП
Инструментарий NX toolkit для интеграции с Python (https://github.com/datacenter/nxtoolkit)
CLI REST JSON RPC SNMP
BGP LACP ACL QoSVLAN
Sys
Dom-yDom-x
BGP ACL
• …
MIT
Config
Faults &
Events
Stats
Data Models (Logical / Concrete)
Operational
Data
DME Processes
Data Management Engine
Object Store REST API(HTTP/HTTPS)
NX-API REST (MDP)Программируемость и автоматизация с помощью объектной модели
DEVNET-2101 18
Сравнение NX-API CLI и NX-API REST
System
BgpEntity BgpInstance BgpDomain BgpPeer
BgpLocalASN
BgpPeerAf
BgpPeerEntry
L1PhysIf
ethpmPhysIf ethpmPortCap
L1Load
L1StormControl
Хранение конфигурационной и операционной информации
Единая структура объектов в БД
Симметричный API
sys/bgp/inst/dom-default/peer-[192.168.0.2]sys/phys-[eth1/1]/phys/portcap
NX-API REST: объектная модель
Документацияhttps://developer.cisco.com/site/nx-os/docs/
Отличия в подходе NX-API REST (MDP)На примере настройки BGP
CLI POST: отправка CLI команды (NX-API CLI)
POST: отправка BGP объекта(NX-API REST)
router bgp 11
router-id
1.1.1.1
POST http://Switch-IP/ins
{'content-
type':'application/json-
rpc'}.json()
{ "jsonrpc": "2.0",
"method": "cli",
"params": {
"cmd": "config t",
"version": 1 }, "id": 1},
{ "jsonrpc": "2.0",
"method": "cli",
"params": {
"cmd": "router bgp
11",
"version": 1 },"id":
1},
{ "jsonrpc": "2.0",
"method": "cli",
"params": {
"cmd": "router-id
1.1.1.1",
"version": 1}, "id":
2}]
POST http://Switch-
IP/api/mo/sys/bgp/inst.json
{ "bgpInst" : {
"children" : [{
"bgpDom" : { 11
"attributes" : {
"name":"default",
"rtrId" :
"1.1.1.1"
}
}
}
]
}
}
NX-API-REST
gRPC Agent
RestconfAgentNGINX
Data Management Engine
NetconfAgent
Object Store
Telemetry Agent
Telemetry Receiver
NetconfClient
BGP LACP ACL QoSVLAN
Transaction Commit Status: Success/Raise
Fault
Model Transformation (YANG)
RestconfClient
gRPC Client
Data Encoder
DME Models YANG Models
Управление NXOS с использованием моделейРасширение набора подходов
Industry definition
Определы стандартом (IETF, ITU, OpenConfig,
etc)
Пример: ietf-diffserv-policy.yang
(IETF Diffserv data model)
Cisco NXOS Specific
Документированы в рамках объектной модели NX-OS как
набор XML объектов
Открытые
модели
NXOS Device DME модели
Модели данных:
открытые и специфичные для NX-OS
Открытые модели – подмножество функций моделей NX-OS
Cisco NXOS Specific
Определяются с с помощью YANG
Непосредственная интеграция с NSO
NXOS YANG модели
Web-based UI Превращение CLI команд в обращения к DME/YANG модели Облегчение принятия основанных на моделям NX-API REST и NETCONF/YANG интерфейсов
Варианты ‘nx-api rest’ и ‘nx yang’ для
генерации обращений к
соответствующим моделям
Ввод команд CLI
Преобразование команды CLI в NX-API REST JSON объект
(Выполняется на устройстве)
Отправляемый NX-API JSON объект
Генерация фрагментов кода на Python для отправки команд с использованием NX-API REST
POST для отправки NX-API JSONобъекта на коммутатор
24
NX-API REST/YANGВстроенная в коммутатор «песочница» (Sandbox)
Data Management Engine
Object Store
Telemetry Agent
BGP LACP ACL QoSVLAN
Transaction Commit Status: Success/Raise
Fault
Data Encoder
Потоковая телеметрия в NX-OSОбзор архитектуры
Collector
gRPC Agent
RestconfAgentNGINX
NetconfAgent
Model Transformation (YANG)
gRPC/GBP
Subscription
Periodic or on-change
Guest Shell
• Защищённая среда выполнения на
основе CentOS7 с возможностью
установки сторонних приложений
• Быстрая разработка/прототипирование
Скриптинг (Python)
Инструментарий Linux
API на уровне устройства
• Защита целостности NX-OS
Изолированное user space
Изоляция сбоев
Ограничение ресурсов
• Использование “guestshell resize” для
управления доступных Guest Shell
ресурсов (процессор/память/диск)
Защищённая среда Linux на коммутаторе
Network OS
Guestshell
Open Application Container
Linuxapplications
Bash Shell
(conf t)# feature bash-shell
(conf t)# run bash
bash$ id
uid=2002(admin) gid=503(network-admin) groups=503(network-admin)
bash$ sudo su
bash# id
uid=0(root) gid=0(root) groups=0(root)
• Доступ к Linux ОС самого коммутатора
• Полный доступ к оборудованию/интерфейсам
• Ядро Linux: Wind River 3.4.43. Distribution: Yocto 1.2
• Доступ только для пользователей NX-OS с ролями dev-ops или network-admin
Open NX-OSИспользование средств Linux для работы с интерфейсами
Порты коммутатора доступны для настройки и иcпользования как интерфейсы Linux сервера. Примеры:
ifconfig для изменения MTU интерфейса:
# ifconfig Eth2-1 mtu 9000
tcpdump для диагностики:
# tcpdump -w file.pcap -i Eth1-1
ethtool для получения детальной статистики:
# ethtool –S Eth1-1
ip route для добавления статического маршртута
# ip route add 203.0.113.0/24 via 198.51.100.2 dev Eth2-1
Отображение VRF в Linux namespaces
# ip netns
management
default
Open NX-OSУправление пакетами для NX-OS/Guestshell средствами YUM/RPM
•Возможность устанавливать сторонние программные компоненты на уровне Guestshell или NX-OS
•Средства мониторинга (Ganglia, Splunk, tcollector)
•Агенты управления конфигурациями (Chef/Puppet)
•Сторонние реализации протоколов маршртизации (Quagga)
•ПО собственной разработки
•Возможность патчинга/обновления компонент NX-OS с помощью rpm/yum
•Управление фоновыми процессами (демонами) с помощью стандартных механизмов Linux
•Встроенная поддержка YUM
Package as RPM
C app with
standard Linux
constructs
Open Embedded
64 bit Build
Environment
Cisco/Local
Repository
RPM local
repository
RPM upload
YUM Install
Linux Daemon
Linux Kernel
• Raw Socket
• Netdevs
• Libpcap
init.d
Monitoring
server
ASIC
Build Server Target Switch
Open NX-OS Разработка своих приложений
• Разработка и развёртывание собственных приложений:• SDK доступен с сайта Cisco, детали – в «Nexus 9000
Programmability Guide» • Установка SDK на Linux сервере разработки
(Fedora/Ubuntu/CentOS)• Компиляция/сборка и формирование пакетов на
сервере разработки, распространение и установка с использованием центального или локального репозитория
• Установка своих или сторонних приложений:• Непосредственно в NX-OS Linux (Yocto/Poky)• В среде Guestshell на базе CentOS7
Local RepositoryServer(YUM)
yum install app.rpm
http://repo-server/app.rpm
Respository
Средства управления конфигурациямиСовременный подход к управлению инфраструктурой
Декларативное управление: указание желаемого состояния
Часть DevOps подхода – «инфраструктура как код»
Основное применение – управление серверами, но используется и для других элементов инфраструктуры
Разные подходы к реализации:
С использованием агентов:
Chef, Puppet, CFEngine, SaltStack
Без использования агентов
Ansible, Salt SSH
CM Tool Nexus 3k/9K Nexus 5/7K
6.1 7.2
7.0 7.3
7.0 7.3
Puppet/Chef Master Server
Native Linux Service/etc/init.d/puppet.d & chef.d
NX-OS
Cisco Puppet/Chef Agent
Open NX-OS Агенты Рuppet/Chef для коммутаторов Nexus
NX-APICisco Puppet/Chef Module(Incl Utility
GEMs)
Linux Software Repository Server
Yum/RPM install puppet/chef.rpm
• Агенты для Puppet/Chef доступны на Puppet Forge/ Chef Supermarket
• Инсталляция агента в Guest shell или в Bash shell• Установка модулей Puppet/Chef для Cisco на Puppet Master
/ Chef Server• Агент на коммутаторе периодически опрашивает сервер
для обновления и выполняет действия по приведению в желаемое состояние
Интеграция с PuppetПровайдеры/типы Cisco для Puppet
• Поддержка NX-OS native (50) и netdev (21) типов - самая широкая поддержка в индустрии!
• Расширяемость путём добавления CLI команд используя cisco_command_config
Модули с поддержкой Cisco :Puppet Open-Source:https://github.com/cisco/cisco-network-puppet-module
Puppet Enterprise:https://forge.puppet.com/puppetlabs/ciscopuppet
Демо Puppet на YouTube:https://youtu.be/NALrL0oZtDg
Интеграция с ChefПровайдеры Cisco для Chef
• Текущий набор модулей для Chef
• Расширяемость путём добавления CLI команд используя cisco_command_config
Модули с поддержкой Cisco :Chef Open-Source:https://github.com/cisco/cisco-network-chef-cookbookChef Enterprise:https://supermarket.chef.io/cookbooks/cisco-cookbook
Демо Chef на YouTube:https://youtu.be/e-otCss_YNA
Ansible
Ansible опирается на push модель без использование агентов
Использует шаблоны на базе YAML и Jinja2
Может использовать CLI (SSH) или NX-API
Использование модулей nxos-ansible, или Core Ansible
Ansible Server
Playbooks
Server sends config when playbook is run
NX-API (HTTP/S)CLI (SSH)
Nexus
No agentfeature nxapi
Unlike server configuration Ansible does not execute Python on-box
36
Интеграция с AnsibleМодули Cisco в Ansible Core
Модули для NX-OShttp://docs.ansible.com/ansible/list_of_network_modules.html#nxos
• 66 модулей для NX-OS в Ansible – самая широкая поддержка в индустрии!
• Расширяемость путём добавления CLI команд используя cisco_command_config
Демо Ansible на YouTube:https://youtu.be/JQ9Q0NwiuHM
Ссылки по теме
Источник Ссылка
DevNet: cайт Cisco для разработчиков по тематике NXOS (включая sandbox среду и Virtual Nexus 9000)
https://developer.cisco.com/site/nx-os/https://developer.cisco.com/site/nx-os/docs/guides/getting-started/
Репозиторий Cisco по программмируемости для ЦОД (Nexus/ACI)
http://github.com/datacenter/
Книга «Programmability and Automation with Cisco Open NX-OS»
http://www.cisco.com/c/dam/en/us/td/docs/switches/datacenter/nexus9000/sw/open_nxos/programmability/guide/Programmability_Open_NX-OS.pdf
Слишком заняты, чтобы сделать свою работу эффективнее? ;)
Cisco Connect 2017 © 2017 Cisco and/or its affiliates. All rights reserved. 38
Нет, спасибо!
Мы слишком заняты...
#CiscoConnectRu#CiscoConnectRu
Спасибо за внимание!
Оцените данную сессию в мобильном приложении конференции
© 2017 Cisco and/or its affiliates. All rights reserved.
Контакты:
Тел.: +7 495 9611410www.cisco.com
www.facebook.com/CiscoRu
www.vk.com/cisco
www.instagram.com/ciscoru
www.youtube.com/user/CiscoRussiaMedia