cisco connect 2018 – Презентация...cobra sdk • «Привязка» к python для...

34

Upload: others

Post on 29-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация
Page 2: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Программное управление и автоматизация фабрики Cisco ACI

Александр Скороходов• Технический консультант

Page 3: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Cisco ACIпрограммируемая инфраструктура

App DBWeb

Внешняя сеть

передачи

данных

QoS

ACL

QoS

LB

QoS

МСЭ, LB

App

App/

Sec

Ops:

cеть,

cерверы,...

DevOps

API

API

API

Page 4: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

OpFlex

BusinessApp

BusinessApp

Fabric

Fabric Management

SDKs&Tools

Business Processes

REST

REST API

GUIBusiness

AppACIToolkit

CobraSDK

Visore UCSD

BusinessApp

CloudCenter

Программируемость ACI: архитектура

Page 5: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Варианты автоматизации 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

Page 6: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Объектная модель ACIДерево управляющей информации

• Всё в системе (настройки, оборудование, состояние) моделируется как набор Managed Objects (MOs).

• MOs иерарически организованы в Management Information Tree (MIT).

• Конфигурация системы

• Обнаруженные компоненты

• Текущий статус, включая статистику и отказы

• Объекты в дереве обладают отношениями «родитель-потомок»

Page 7: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Объектная модель ACIДерево управляющей информации

• Логически связанные объекты могут иметь отношение от одного к другому (тоже объект)

• ВСЯ программируемость ACI построена по работе с этим деревом:

• Создание новых объектов

• Чтение/поиск объектов

• Модификация существующих объектов

• Удаление объектов

• Не все объекты доступы на запись

• Статистика, отказы и т.д.

• Работа с моделью контролируется RBAC

• Единая модель безопасности незавимо от способа управления

Page 8: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Иерархия объектной модели в 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

Page 9: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Встроенная документация по моделиhttps://{{APIC}}/doc/html/

BRKACI-2770

Page 10: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

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

Page 11: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Поддерживаемые методы REST API CRUD операции

HTTP метод Функция

GET Чтение объекта по его Distinguished Name (DN) или всех экземпляров класса

POST Создание нового объекта или изменение существующего объекта

DELETE Удаление объекта

DEVNET-2000

Page 12: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

REST API: доступ к объектной модели

12

self children subtree

Фильтрация результатов запроса:

Page 13: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

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>);

• Ответ на подписку:

Page 14: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Прямой доступ к REST API

14

Page 15: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Сохранение и загрузка объектов через GUI

Page 16: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

«Перехватите» XML/JSON запрос с использованием API inspector в GUI

Page 17: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Воспроизведите в REST клиенте

• Скопируйте необходимую информацию в REST client: POST/GET, URL и объект (для POST запросов)

• Хороший вариант: Postman

17

Page 18: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Postman

• Графический REST клиент

• Бесплатное приложение для Windows, MacOS, Linux

• Ранее являлось Chrome App, теперь – отдельное

• https://www.getpostman.com

• Хранение настроек среды, включая идентификационную информацию

• Environment

• Функция Runner для «малой автоматизации»

• Поддержка работы с .csv файлами

Page 19: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Поддержка языков программирования: Python

Page 20: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Программируемость ACI из Python

• Python – самый популярный язык для управления инфраструктурой

• Простота

• Выразительность

• Варианты автоматизации ACI из Python:

• Использование типовых REST/HTTP клиентов: requests и т.д.

• Универсально, но трудоёмко

• Нет проверки структуры и значений

• Cobra SDK

• Полная поддержка модели данных ACI

• Генерируется автоматически вместе с очередным релизом ПО

• Поставляется в скомпилированном виде на контроллере APIC

• ACI Toolkit

• Проект с открытым кодом

• Объёмная документация

• Много готовых примеров

• Встроенная поддержка подписки на события в объектной модели

• Поддержка основных классов модели ACI

Page 21: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Вызов REST API из PythonС использованием модуля requests

Page 22: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

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

Page 23: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Документация по Cobra SDK

Документацию по Cobra SDK можно найти на https://<apic address>/cobra/index.html, включая описание API, справочник по модели и примеры использования

Page 24: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST 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

Page 25: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

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

Page 26: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Примеры приложений в составе ACIToolkit

• Endpoint Tracker

• Lint

• Cableplan

• Configuration Snapshot and Rollback

• Visualization Examples

• Intersite Configuration Federation

• Connection Search

TECDCT-2941 26

Page 27: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

• Подписывается на уведомления от 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

Page 28: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

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

Page 29: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Средства управления конфигурациямиСовременный подход к управлению инфраструктурой

• Декларативное управление: указание желаемого состояния

• Часть DevOps подхода –«инфраструктура как код»

• Основное применение – управление серверами, но используется и для других элементов инфраструктуры

• Разные подходы к реализации:

• С использованием агентов:

• Chef, Puppet, CFEngine, SaltStack

• Без использования агентов

• Ansible, Salt SSH

Page 30: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

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

Page 31: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Интеграция с 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

Page 32: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Дополнительная информация

32© 2018 Cisco and/or its affiliates. All rights reserved.

Page 33: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Ссылки по теме

• 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

Page 34: Cisco Connect 2018 – Презентация...Cobra SDK • «Привязка» к Python для APIC REST API • Поиск, чтение, создание, модификация

Оцените данную сессию в мобильном

приложении конференции

• 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.