Автоматизация и программируемость ACI€¦ · • Системы...

20
Автоматизация и программируемость ACI - для конфигурирования и диагностики Александр Скороходов Технический консультант Cisco Systems

Transcript of Автоматизация и программируемость ACI€¦ · • Системы...

Page 1: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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

Александр Скороходов

Технический консультант

Cisco Systems

Page 2: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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

App DBWeb

Внешняя сеть

передачи

данных

QoS

ACL

QoS

LB

QoS

МСЭ, LB

App

App/Sec

Ops:cеть, cерверы,...

DevOps

API

API

API

Page 3: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Программирование ACI: объектная модель и REST API

Page 4: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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

Документация по MIM – встроена в APIC GUI

Page 5: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

REST API

• Единственный интерфейс управления фабрикой

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

• GUI

• CLI

• Cobra SDK

• ACI Toolkit

• Orchestrators

• etc

APIC Cluster

REST

Leaves &

Spines

GUI

CLI

Postman

ACI Toolkit

VisoreObject

Browser

CobraSDK

UCSD

CloudCenter

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

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

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

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

Page 6: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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

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

Page 7: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Инструменты доступа к модели управления ACI

• Штатные интерфейсы администратора

• APIC GUI, NXOS-подобный CLI

• Ручной доступ к модели

• Save/Post - «программирование без программирования»

• Visore object browser

• Доступ из CLI: mocreate/moset/moquery/modelete

• /.aci файловая система (/aci, /mit, /debug)

• Языки программирования/скриптинга

• Python – детальное обсуждение дальше

• Ruby, Java… любые языки, позволяющие обращаться к REST API

• Системы управления конфигурациями / «инфраструктура как код»

• Ansible, Terraform…

• Оркестраторы

• Cisco UCS Director, CloudCenter, VMWare vRealize Automation, MS Azure Pack…

• Разработка приложений для APIC

• Stateless – HTML/JS код, выполняющийся в контексте APIC GUI

• Stateful – полноценные приложения, выполняющиеся на кластере APIC в Docker контейнерах

© 2019 Cisco and/or its affiliates. All rights reserved.

Page 8: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Примеры применения программируемости ACI

• Настройка• Конфигурирование интерфейсов, создание VPC и т.д.

• Создание тенантов, приложений, групп

• Клонирование объектов• Удобно для создания тестовых сред и т.д.

• Диагностика• Обнаружение отказов, несогласованностей и т.д.

• Отказы (faults), адреса, соседства… - в ACI тоже объекты!

• Статистика: • Поиск TopN, ошибок и т.д.

• Мониторинг состояния и изменений• Подписка (subscription) – для немедленного уведомления

• Расширение функций• Пример: Endpoint Tracker сначала вышел как пример для ACI Toolkit

• ACI Apps – штатный механизм встраивания новых функций

Page 9: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Программирование ACI на Python

Page 10: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Варианты работы с ACI из Python

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

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

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

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

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

• Документация https://cobra.readthedocs.io

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

• Объёмная документация, много готовых примеров

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

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

• Документация https://acitoolkit.readthedocs.io

• . . .

Page 11: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Cobra SDK

• «Привязка» к Python для APIC REST API: поиск, чтение, создание, модификация и удаление объектов

• Объекты в Cobra - 1:1 представление объектов в MIT

• Политику, используемую в GUI, очень просто использовать как шаблон для разработки

• Для всех данных выполняется локальная валидация

• В данный момент требует Python 2.7

• Инсталляционные файлы – на самом APIC: https://<apic_address>/cobra/_downloads/

• Чтобы работать с Cobra SDK из Python на самом APIC (из его CLI), выполните easy_install --user requests

Page 12: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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

Page 13: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

...или сохраните объект в XML/JSON формате через GUI

Page 14: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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 15: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Подготовка к работе с ACI из Python

• Установите Python 2.7

• Установите Cobra SDK (и его зависимости) по инструкциям на https://<apic_address>/cobra/index.html

• Установите webarya (и его зависимости – arya, flask и т.д) по инструкциям на https://github.com/datacenter/webarya

• Запустите webarya с указание порта для web-доступа:

python webarya.py –p 5000

• Подготовьте шаблоны кода (см далее)

• Подготовьте файл credentials.py с настройками доступа (файл в таком формате поддерживает и ACIToolkit):

LOGIN = "admin"

PASSWORD = “Cisco123"

URL = "https://10.0.0.1"

Page 16: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Полезные советы

• Используйте для тестирования скриптов на рабочей системе администратора с ограниченными полномочиями

• Перед тестированием сделайте «снимок» (Snapshot)конфигурации - но отдавайте себе отчёт в последствиях восстановления

• Можно автоматизировать

• Где возможно – делайте снимок на уровне Tenant

• Разделяйте подход к «одноразовым» скриптам и инструментам долговременного использования

• Пользуйтесь примерами (developer.cisco.com, github.com)

© 2019 Cisco and/or its affiliates. All rights reserved.

Page 17: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Шаблон скрипта для настройки через CobraЭто пример, а не «наилучшая практика»!

from cobra.mit.access import MoDirectory

from cobra.mit.session import LoginSession

from cobra.mit.request import ConfigRequest

# Additional modules/classes as needed

import requests.packages.urllib3

requests.packages.urllib3.disable_warnings() # Disable Cert warning

from credentials import * # Login/pass/URL from credentials.py

ls = LoginSession(URL, LOGIN, PASSWORD)

md = MoDirectory(ls)

md.login()

cr = ConfigRequest()

topMo = ... # Create and modify top level object

cr.addMo(topMo)

md.commit(cr)

Page 18: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Шаблон скрипта для диагностики через CobraЭто пример, а не «наилучшая практика»!from cobra.mit.access import MoDirectory

from cobra.mit.session import LoginSession

from cobra.mit.request import ConfigRequest

# Additional modules/classes as needed

import requests.packages.urllib3

requests.packages.urllib3.disable_warnings() # Disable Cert warning

from credentials import * # Login/pass/URL from credentials.py

ls = LoginSession(URL, LOGIN, PASSWORD)

md = MoDirectory(ls)

md.login()

results = md.lookupByClass('className’, propFilter=‘filterString’)

...

Page 19: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

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

• 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

© 2019 Cisco and/or its affiliates. All rights reserved.

• 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 20: Автоматизация и программируемость ACI€¦ · • Системы управления конфигурациями / «инфраструктура

Спасибо за внимание!

www.facebook.com/CiscoRu

www.instagram.com/ciscoru

www.youtube.com/user/CiscoRussiaMedia

www.vk.com/cisco

Оцените данную сессию в мобильном приложении конференции

Контакты:

Тел.: +7 495 9611410www.cisco.com

© 2019 Cisco and/or its affiliates. All rights reserved.