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

Post on 29-Aug-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Программное управление и автоматизация фабрики 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