Программное управление и автоматизация фабрики Cisco ACI
Александр Скороходов• Технический консультант
Cisco ACIпрограммируемая инфраструктура
App DBWeb
Внешняя сеть
передачи
данных
QoS
ACL
QoS
LB
QoS
МСЭ, LB
App
App/
Sec
Ops:
cеть,
cерверы,...
DevOps
API
API
API
OpFlex
BusinessApp
BusinessApp
Fabric
Fabric Management
SDKs&Tools
Business Processes
REST
REST API
GUIBusiness
AppACIToolkit
CobraSDK
Visore UCSD
BusinessApp
CloudCenter
Программируемость ACI: архитектура
Варианты автоматизации ACI
• Использовать REST API напрямую• Из GUI APIC (Save/Post)
• Postman
• Программирование• Cobra SDK
• ACI Toolkit
• Оркестраторы• Cisco UCS Director
• Cisco CloudCenter (CliQr)
• VMWare vRealize Automation
• ….
• Системы управления конфигурациями• Ansible и т.д.
• Программы для App Center• Stateful
• Staleless
REST API
ACIToolkit
CobraSDK
App UCSDCloudCenter
Объектная модель ACIДерево управляющей информации
• Всё в системе (настройки, оборудование, состояние) моделируется как набор Managed Objects (MOs).
• MOs иерарически организованы в Management Information Tree (MIT).
• Конфигурация системы
• Обнаруженные компоненты
• Текущий статус, включая статистику и отказы
• Объекты в дереве обладают отношениями «родитель-потомок»
Объектная модель ACIДерево управляющей информации
• Логически связанные объекты могут иметь отношение от одного к другому (тоже объект)
• ВСЯ программируемость ACI построена по работе с этим деревом:
• Создание новых объектов
• Чтение/поиск объектов
• Модификация существующих объектов
• Удаление объектов
• Не все объекты доступы на запись
• Статистика, отказы и т.д.
• Работа с моделью контролируется RBAC
• Единая модель безопасности незавимо от способа управления
Иерархия объектной модели в ACI
AAA, SecurityTenants – User,
Common …
Policy Universe
APIC Controllers
…
Layer 4-7
Services
Fabric, Access,
Inventory …VM Domains …
Tenant
FilterApplication
ProfileOutside Network ContractBridge Domain VRF
EPG
Subnet Subject
BRKACI-2770
Встроенная документация по моделиhttps://{{APIC}}/doc/html/
BRKACI-2770
REST API
• Единственный интерфейс управления фабрикой
• Используется всеми методами управления и программирования
• GUI
• CLI
• Cobra SDK
• ACI Toolkit
• Orchestrators
• etc
10DEVNET-
2001
GUI
CLI
Postman
ACI Toolkit
VisoreObject
Browser
CobraSDK
APIC Cluster
REST
Leaves &
Spines
UCSD
CloudCenter
Поддерживаемые методы REST API CRUD операции
HTTP метод Функция
GET Чтение объекта по его Distinguished Name (DN) или всех экземпляров класса
POST Создание нового объекта или изменение существующего объекта
DELETE Удаление объекта
DEVNET-2000
REST API: доступ к объектной модели
12
self children subtree
Фильтрация результатов запроса:
REST API: подписки
• В рамках REST запроса клиент может запросить push уведомление о любых изменениях в ответе использованием websocket протокола (RFC 6455)
• Пример:
• GET http://192.0.20.123/api/class/fvTenant.json?subscription=yes
• Для получения уведомлений клиент должен создать websocket. Пример на JavaScript:
• var Socket = new WebSocket(http://192.0.20.123/socket<current API session cookie>);
• Ответ на подписку:
Прямой доступ к REST API
14
Сохранение и загрузка объектов через GUI
«Перехватите» XML/JSON запрос с использованием API inspector в GUI
Воспроизведите в REST клиенте
• Скопируйте необходимую информацию в REST client: POST/GET, URL и объект (для POST запросов)
• Хороший вариант: Postman
17
Postman
• Графический REST клиент
• Бесплатное приложение для Windows, MacOS, Linux
• Ранее являлось Chrome App, теперь – отдельное
• https://www.getpostman.com
• Хранение настроек среды, включая идентификационную информацию
• Environment
• Функция Runner для «малой автоматизации»
• Поддержка работы с .csv файлами
Поддержка языков программирования: Python
Программируемость ACI из Python
• Python – самый популярный язык для управления инфраструктурой
• Простота
• Выразительность
• Варианты автоматизации ACI из Python:
• Использование типовых REST/HTTP клиентов: requests и т.д.
• Универсально, но трудоёмко
• Нет проверки структуры и значений
• Cobra SDK
• Полная поддержка модели данных ACI
• Генерируется автоматически вместе с очередным релизом ПО
• Поставляется в скомпилированном виде на контроллере APIC
• ACI Toolkit
• Проект с открытым кодом
• Объёмная документация
• Много готовых примеров
• Встроенная поддержка подписки на события в объектной модели
• Поддержка основных классов модели ACI
Вызов REST API из PythonС использованием модуля requests
Cobra SDK
• «Привязка» к Python для APIC REST API
• Поиск, чтение, создание, модификация и удаление объектов
• Объекты в Cobra - 1:1 представление объектов в MIT
• Политику, используемую в GUI, очень просто использовать как шаблон для разработки
• Для всех данных выполняется локальная валидация
• Поставляется как .egg (загрузка с APIC: https://<apic address>/cobra/_downloads), установка через easy_install
REST API
BusinessApp
BusinessApp
Cobra SDK
Документация по Cobra SDK
Документацию по Cobra SDK можно найти на https://<apic address>/cobra/index.html, включая описание API, справочник по модели и примеры использования
APIC REST to Python Adapter: arya.py
• Администратор выполняет действие через GUI
• Обращение к объекту фиксируется через API Inspector
• arya.py создаёт код на Python из объекта
• Автоматическая генерация кода для быстрой автоматизации задач
• Находится на http://github.com/datacenter/arya/
• Web-фронтэнд для локального использования: WebAryahttps://github.com/datacenter/webarya
ACI Toolkit
NX-OS like
CLICustom
Python Scripts
ACI toolkitПростой вход в программируемость ACI
Простой Python SDK, использующий APIC API
Скрипты легче читать, сохраняет базовые конструкции ACI с «интуитивными» именами классов
Не полная функциональность, но наиболее часто используемые функции (~30 классов)
Поддерживает «подписку»
Open Source, участвует Cisco и сторонние разработчики
http://github.com/datacenter/acitoolkit
25
Примеры приложений в составе ACIToolkit
• Endpoint Tracker
• Lint
• Cableplan
• Configuration Snapshot and Rollback
• Visualization Examples
• Intersite Configuration Federation
• Connection Search
TECDCT-2941 26
• Подписывается на уведомления от APIC и выполняет действия при подключении/отключении Endpoints
• Сейчас уже часть базовой фунциональности ACI (начиная сACI 1.2(1))
Пример: End Point Tracker
27
# Subscribe to End Point live updates
aci.Endpoint.subscribe(session)
while True:
if aci.Endpoint.has_events(session):
# Gather information on the endpoint
ep = aci.Endpoint.get_event(session)
epg = ep.get_parent()
app_profile = epg.get_parent()
tenant = app_profile.get_parent()
# Do something when an EP leaves the network
if ep.is_deleted():
...
# Do something when an EP joins the network
else:
...
# Sleep or else the endpointtracker will take 100%
cpu time.sleep(0.1)
End Point Tracker main code:
https://github.com/datacenter/acitoolkit/blob/master/applications/endpointtracker/aci-endpoint-tracker.py
Использование систем управления конфигурациями
Средства управления конфигурациямиСовременный подход к управлению инфраструктурой
• Декларативное управление: указание желаемого состояния
• Часть DevOps подхода –«инфраструктура как код»
• Основное применение – управление серверами, но используется и для других элементов инфраструктуры
• Разные подходы к реализации:
• С использованием агентов:
• Chef, Puppet, CFEngine, SaltStack
• Без использования агентов
• Ansible, Salt SSH
Ansible и ACI
Ansible Control Station
tasks:
- name: Create Tenant
aci_tenant:
host: 192.168.0.1
username: admin
password: cisco123
tenant: New_Tenant
1. Инженер
«запускает» Ansible
playbooks на YAML на
сервере управления
2. Ansible выполняет модули
локально для управления ACI через
REST API фабрики
• Ansible опирается на push модель без использование агентов
• Использует шаблоны на базе YAML и Jinja2
• В отличие от конфигурации серверов Ansible не выполняет Python скрипты на APIC
Интеграция с AnsibleМодули Cisco ACI в Ansible Core
Модули для ACIhttp://docs.ansible.com/ansible/list_of_network_modules.html#aci
• 51 модуль для ACI в Ansible
2.5
• Расширяемость путём
обращения к произвольным
объектам через REST API:
модуль aci_rest
• Встроенная документация
доступна через ansible-doc
Демо Ansible на YouTube:
https://youtu.be/Vo02dLboTpk
Дополнительная информация
32© 2018 Cisco and/or its affiliates. All rights reserved.
Ссылки по теме
• ACI Programmability Learning Labs
• http://cs.co/DevNet_ACI
• Always-On ACI Sandbox
• http://cs.co/ACI_SBX
• ACI on DevNet
• https://developer.cisco.com/aci
• Code Samples
• https://github.com/datacenter/aci
• REST API Documentation
• http://cs.co/ACI_API
• ACI Toolkit Documentation
• https://acitoolkit.readthedocs.io
• Cobra SDK Documentation
• https://cobra.readthedocs.io
• ACI Ansible Documentation
• http://cs.co/ansible_net
Оцените данную сессию в мобильном
приложении конференции
• www.facebook.com/CiscoRu
• www.instagram.com/ciscoru
• www.youtube.com/user/CiscoRussiaMedia
• www.vk.com/cisco
Контакты:
Тел.: +7 495 9611410www.cisco.com
Спасибо за внимание!
34© 2018 Cisco and/or its affiliates. All rights reserved.
Top Related