72
Хаванкин Максим cистемный архитектор, CCIE [email protected] Мастер-класс по использованию программных интерфейсов для управления инфраструктурой ЦОД Программные интерфейсы управления (API) архитектурой, ориентированной на приложения (ACI) 23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved.

Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Хаванкин Максим cистемный архитектор, CCIE [email protected]

Мастер-класс по использованию программных интерфейсов для управления инфраструктурой ЦОД Программные интерфейсы управления (API) архитектурой, ориентированной на приложения (ACI)

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved.

Page 2: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Содержание

•  Несколько слов об API •  Объектная модель ACI •  Использование REST API для управления APIC •  Cobra SDK •  Arya – генератор кода на Python •  ACI toolkit

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 2

Page 3: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Что представляет собой ACI?

ACI фабрика

Неблокируемая фабрика на базе оверлеев

App DB Web

Внешняя сеть передачи данных

(Tenant VRF)

QoS

Filter

QoS QoS

Filter

Application Policy Infrastructure

Controller

APIC

1. Профиль приложения

2. Кластер контроллеров

3. Cеть на базе Nexus 9000

Service

Filter

Service Сеть ЦОД на базе коммутаторов Nexus 9000 с централизованным

управлением при помощи контроллера на основе политик

Page 4: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Несколько слов об API

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 4

Page 5: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

API на уровне устройства •  NETCONF •  REST •  JSON-RPC

Высокоуровневые абстракции и DevOps •  Puppet •  Chef • Openstack

Новые инструменты для настройки сетевых устройств

Page 6: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST использует знакомую модель

HTTP GET

HTML

Описывает как данные отображаются пользователю

HTTP GET

JSON/XML

Описывают данные в формате, который понятен приложению

{"ids":[303776224, 19449911, 607032789, 86544242, 2506725913, 17631389], "next_cursor":0, "next_cursor_str":"0", "previous_cursor":0, "previous_cursor_str":"0"}

Web серфинг REST API Twitter: IDs of last five followers

Page 7: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

JSON-RPC: выглядит как REST, но немного по другому

Page 8: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Одинаково: оба пересылают/принимают JSON поверх HTTP

REST (CSR 1000v) JSON-RPC (N9K NX-API)

Page 9: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST: много ресурсов

•  https://172.6.1.118/api/v1… …/global/banner …/global/hostname …/global/reload …/interfaces/… …/routing-svc/… …/nat-svc/… …/acl/… …

JSON-RPC: мало ресурсов

•  https://10.10.10.8/ins

Разное: Ресурсы (URI)

CSR1kV N9K

Page 10: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST: стандартные HTTP методы

•  GET: Retrieve/List •  PUT: Replace •  POST: Create New Entry •  DELETE: Delete

JSON-RPC: POST + body method

Разное: методы

Page 11: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Объектная модель ACI

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 11

Page 12: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Объектная модель ACI

•  В модели находятся все объекты о которых знает APIC контроллер §  Network, Compute, Application, и т.д.

•  Management Information Tree (MIT): объекты сгруппированы в виде дерева

•  MIT имеет разные ветки (distinct branches) для разных функциональных областей

•  Каждый узел (node) это управляемый объект: §  имеет class & distinguished name

12

topRoot

polUni compUni

Page 13: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Конфигурация сети как набор объектов

Конфигурация представляет собой упорядоченный набор объектов … которые имеют ссылки друг на друга

Root

Policy Universe

Tenants

Applications

Infra

VLANs

Fabric

Nodes

Virtual Network

Hypervisors

13

Tenant

VRF VRF Bridge Domain 1 10.1.0.1/24

Bridge Domain 2 10.2.0.1/24

Bridge Domain 1

Page 14: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Уникальное имя (distinguished name = dn)

•  DN используется как глобальный уникальный идентификатор для каждого объекта в дереве MIT

•  Представляет собой relative name (RN) к которому приставляется слева родительское RN (parent RN)

•  Правила именования RN зависят от объекта управления §  детали в документации

14

topRoot

polUni fvTenant

fvAp fvAEPg

vzFilter vzEntry

vzBrCP vzSubj

fabricTopology fabricPod

fabricPathEpCont fabricPathEp

fabricNode

vmmProvP vmmDomP vmmCtrlrP

Пример: uni/tn-tenant/ap-app1/epg-epg1

Пример: topology/pod-1/paths-101/pathep-[eth1/1]

Page 15: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Программные интерфейсы ACI

•  Northbound API дают возможность управлять контроллером из внешних систем

•  Northbound API §  Native REST API §  Python SDK (“Cobra”)

•  Southbound API применяются для управления устройствами подключаемыми к фабрике

•  Southbound API §  L4-7 Device Packages §  OpFlex

15

Системы управления Скрипты

APIC REST МСЭ Коммутатор

OpFlex

APIC

Dev Pkg

Page 16: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST – единственный интерфейс

16

GUI

CLI

Web браузер

API Tools

Object Browser (visore)

APIC кластер + Leaves & Spines

REST

Python SDK

Page 17: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Использование REST API для управления APIC

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 17

Page 18: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST API: поддерживаемые методы

•  Поддерживаются стандартные методы

•  Stateless §  No state for requests or

sessions •  HTTP1.1 / HTTPS (default) •  Обрабатываются любым

APIC в кластере •  Доступ к коммутаторам через APIC

18

Метод Действие

GET Read

POST Create / Update

DELETE Delete

•  Формат XML или JSON –  определяется расширением в URI –  Content-Type и Accept header игнорируются

Page 19: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST API: операции чтения

19

/api

API Operator

/{mo|class}

Определение объекта или класса

/{dn|classname}

Distinguished name или

Object Class

.{xml|json}

Тип ответа xml или json

?[options]

Фильтры, селекторы или модификаторы

запроса

host:port

APIC хост и порт

http(s)://

http или https

Page 20: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Получение информации об объекте по его имени (DN)

•  Чтение свойств EPG

20

<imdata totalCount="1"> <fvAEPg childAction="" configIssues="" configSt="applied" descr="" dn="uni/tn-Cisco/ap-Software/epg-Download" lcOwn="local" matchT="AtleastOne" modTs="2015-05-23T22:19:21.173+00:00" monPolDn="uni/tn-common/monepg-default" name="Download" pcTag="49189" prio="unspecified" scope="2293760" status="" triggerSt="triggerable" uid="0"/></imdata>

http://apic/api/mo/uni/tn-Cisco/ap-Software/epg-Download.xml

Page 21: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Поиск информации по имени класса

•  Получение L1 свойств всех физических интерфейсов

21

<imdata totalCount="1134"> <l1PhysIf adminSt="up" autoNeg="on" bw="0" childAction="" delay="1" descr="" dn="topology/pod-1/node-102/sys/phys-[eth1/32]" dot1qEtherType="0x8100" ethpmCfgFailedBmp="" ethpmCfgFailedTs="00:00:00:00.000" ethpmCfgState="0" id="eth1/32" inhBw="unspecified" layer="Layer2" lcOwn="local" linkDebounce="100" linkLog="default" mdix="auto" medium="broadcast" modTs="2015-06-03T22:07:10.513+00:00" mode="trunk" monPolDn="uni/infra/moninfra-default" mtu="9000" name="" portT="leaf" routerMac="not-applicable" snmpTrapSt="enable" spanMode="not-a-span-dest" speed="10G" status="" switchingSt="disabled" trunkLog="default" usage="discovery"/>…</imdata>

http://apic/api/class/l1PhysIf.xml?query-target-filter=eq(l1PhysIf.speed,"10G")

Page 22: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Получение всех свойств объекта

•  Чтение всех свойств объекта (subtree=агдд)

22

<imdata totalCount="1"> <compVm cfgdOs="Ubuntu Linux (32-bit)" childAction="" descr="" dn="comp/prov-VMware/ctrlr-[vc-1]-vCenter_1/vm-vm-1001" guid="5024a300-1fde-aa80-72d4-7c33ef63a688" id="0" lcOwn="local" modTs="2015-06-05T17:04:04.471+00:00" monPolDn="" name="32bit_Ubuntu" oid="vm-1001" os="" state="poweredOn" status="" type="virt"> <compVNic adapterType="Vmxnet3" addressType="assigned" childAction="" descr="" guid="" id="0" ip="0.0.0.0" lcOwn="local" mac="00:50:56:A4:D0:D0" modTs="2015-06-05T17:04:04.471+00:00" monPolDn="" name="Network adapter 1" oid="4000" operSt="up" rn="vnic-00:50:56:A4:D0:D0" status="" type="virt"/> <compRsHv childAction="" forceResolve="no" lcOwn="local" modTs="2015-06-04T22:39:08.435+00:00" rType="mo" rn="rshv-[comp/prov-VMware/ctrlr-[vc-1]-vCenter_1/hv-host-12]" state="formed" stateQual="none" status="" tCl="compHv" tDn="comp/prov-VMware/ctrlr-[vc-1]-vCenter_1/hv-host-12" tType="mo"/> </compVm></imdata>

http://apic/api/mo/comp/prov-VMware/ctrlr-[vc-1]-vCenter_1/vm-vm-1001.xml?rsp-subtree=full

Атрибут subtree query установлен в значение "full" для получения всех связанных объектов

target Dn содержит ссылку на другой объект – в этом примере – гипервизор чтобы получить больше информации об объекте

Page 23: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

REST API: операции Create/Update

/api /mo /dn .{xml|json} ?[options] host:port http(s)://

<fvTenant name="NewTenant"> <fvAp name="NewApplication"> <fvAEPg name="WebTier"> <fvRsPathAtt encap="vlan-1" mode="regular" tDn="topology/pod-1/paths-17/pathep-[eth1/1]"/> </fvAEPg> </fvAp> </fvTenant>

В теле запроса (payload) в виде XML/JSON на APIС передается команда

23

Page 24: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Object Browser: Visore

•  Встроенный в APIC браузер для поиска объектов и проверки их состояния и свойств

•  Ссылка на Visore: http://<apic>/visore.html

•  Поиск объекта по его dn (fvTenant, topSystem, topology/pod-1/node-101)

24

Page 25: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Sniffer: API Inspector

•  API вызовы, которые выполняются при действиях в GUI мониторятся §  GET, POST

•  Команды навигации и GET-вызовы которые выполняются в фоновом режиме

•  При изменении конфигурации можно увидеть POST вызовы которые выполняются в фоновом режиме

25

Page 26: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Результат работы API инспектора

26

POST url: http://172.23.3.215/api/node/mo/uni/tn-Cisco.json { "fvTenant": { "attributes": { "name": "Cisco", "status": "created" }, "children": [] } }

Page 27: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Cobra SDK

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 27

Page 28: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

SDK и документация

•  Доступен на APIC*: §  https://<apic>/cobra

•  Доступен на DevNet

§  https://developer.cisco.com/site/apic-dc/

§  Downloads -> Python Egg Files

•  Потребуется использовать Management Information Model §  https://developer.cisco.com/media/

mim-ref/ или https://<apic>/doc/html •  Python SDK документация

§  https://developer.cisco.com/site/apic-dc/documents/pythonapi or

§  https://<apic>/cobra •  APIC REST API User Guide

§  http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-x/api/rest/b_APIC_RESTful_API_User_Guide.html

28

*http://cs.co/9006xDw6

Page 29: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Установка сессии

•  REST •  Login с использованием username и password в payload

§  POST /api/mo/aaaLogin.xml

§  <aaaUser name='admin' pwd='insieme'/>

•  В заголовке ответа находится “APIC-cookie” §  Сохранить и использовать в последующих запросах

Cobra import cobra.mit.accessimport cobra.mit.session

ls = cobra.mit.session.LoginSession( 'https://apic', 'admin', 'insieme')md = cobra.mit.access.MoDirectory(ls)md.login()

md содержит ссылку на сессию на APIC контроллер

29

Page 30: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Примеры простых запросов

REST Запрос информации обо всех endpoint (подключенные к фабрике физические и виртуальные сущности)

GET /api/class/fvCEp.xml

<?xml?><imdata><fvCEp dn="uni/tn-Cisco/ap-Blog/epg-MySQL/cep-00:50:56:82:D2:FE" encap="vlan-501" id="0" ip="0.0.0.0" lcC="vmm" lcOwn="local" mac="00:50:56:82:D2:FE" mcastAddr="not-applicable" name="00:50:56:82:D2:FE” uid="0"/></imdata>

Парсинг результата в виде XML и последующая обработка

Cobra Использование метода “lookupByClass” для поиска всех endpoints (fvCEp) endpoints = md.lookupByClass('fvCEp')print([str(ep.dn) for ep in endpoints])['uni/tn-Cisco/ap-Blog/epg-MySQL/cep-00:50:56:82:D2:FE', 'uni/tn-Cisco/ap-Blog/epg-MySQL/cep-00:50:56:82:C3:D0']

30

Tip: To inspect http requests use debuglevel on httplib: import httplibhttplib.HTTPConnection.debuglevel = 1

Page 31: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Query Filters in Cobra

Built in helpers .lookupByClass and .lookupByDn use .query under the covers For advanced queries, you can use .query directly In this example, we recursively print a full subtree for all endpoints

def printtree(mos, indent=0): for mo in mos: print ' ' * indent, str(mo.meta.className) printtree(mo.children, indent=indent+2)

cq = cobra.mit.access.ClassQuery('fvCEp')cq.subtree = 'full'endpoints = md.query(cq)

printtree(endpoints)

>>> printtree(endpoints) cobra.model.fv.CEp cobra.model.fv.RsNic cobra.model.fv.RsVm cobra.model.fv.RsCEpToPathEp cobra.model.fv.RsHyper cobra.model.fv.ReportingNode

31

Page 32: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Фильтры для запросов

32

•  Более эффективно, возвращается меньшее число объектов •  Фильтрация ответа, по определенным критериям condition(s): §  Синтаксис: http://URI?condition[&condition[&...]]

Тип фильтра Синтаксис Cobra Query Property Описание

query-target {self | children | subtree} AbstractQuery.queryTarget Define the scope of query

target-subtree-class <class name> AbstractQuery.classFilter Respond only elements including specified class

query-target-filter <filter expressions> AbstractQuery.propFilter Respond only elements matching conditions

rsp-subtree {no | children | full} AbstractQuery.subtree specifies child object level included in the response

rsp-subtree-class <class name> AbstractQuery.subtreeClassFilter Respond only specified classes

rsp-subtree-filter <filter expressions> AbstractQuery.subtreePropFilter (>1.0.2m) Respond only classes matching conditions

rsp-subtree-include {faults|health:stats:…} AbstractQuery.subtreeInclude Request additional objects

order-by <classname.property>| {asc | desc} NotImplemented Sort the response based on the property values

Page 33: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Подтверждение изменений в конфигурации

REST Создание нового тенанта

POST /api/mo/uni.xml

<fvTenant name="Cisco"/>

Cobra Создать объект и подтвердить внесение изменений

33

Совет: To get the configured XML body for the object you've created/modified, add the rsp-include query parameter: POST /api/mo/uni.xml?rsp-subtree=modified

topMo = cobra.model.pol.Uni('')fvTenant = cobra.model.fv.Tenant(topMo, name='Cisco')c = cobra.mit.request.ConfigRequest()c.addMo(fvTenant)md.commit(c)

Еще один совет: Disable the annoying Requests Insecure Warning. Put this at the top of your script: import requests.packages.urllib3requests.packages.urllib3.disable_warnings()

Page 34: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Arya – генератор кода на Python

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 34

Page 35: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

APIC REST to Python Adapter: arya.py

•  GUI генерирует REST •  API Inspector отображает

REST •  arya.py создает код из

REST •  Автоматическая генерация кода

•  Доступно §  http://github.com/datacenter/

arya

XML/JSON

arya.py

Python code

{"fvTenant":{"attributes":{"dn":"uni/tn-Cisco","name":"Cisco","rn":"tn-Cisco","status":"created"},"children":[{"fvBD":{"attributes":{"dn":"uni/tn-Cisco/BD-CiscoBd","mac":"00:22:BD:F8:19:FF","name":"CiscoBd","rn":"BD-CiscoBd","status":"created"},"children":[{"fvRsCtx":{"attributes":{"tnFvCtxName":"CiscoNetwork","status":"created,modified"},"children":[]}},{"fvSubnet":{"attributes":{"dn":"uni/tn-Cisco/BD-CiscoBd/subnet-[10.0.0.1/8]","ip":"10.0.0.1/8","rn":"subnet-[10.0.0.1/8]","status":"created"},"children":[]}}]}},{"fvCtx":{"attributes":{"dn":"uni/tn-Cisco/ctx-CiscoNetwork","name":"CiscoNetwork","rn":"ctx-CiscoNetwork","status":"created"},"children":[]}}]}}

fvTenant = cobra.model.fv.Tenant(topMo, name='Cisco')

fvCtx = cobra.model.fv.Ctx(fvTenant, name='CiscoNetwork')

fvBD = cobra.model.fv.BD(fvTenant, mac='00:22:BD:F8:19:FF', name='CiscoBd')

fvRsCtx = cobra.model.fv.RsCtx(fvBD, tnFvCtxName=fvCtx.name)

fvSubnet = cobra.model.fv.Subnet(fvBD, ip='10.0.0.1/8')

35

Page 36: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Использование arya (1/2)

Получение конфигурации, которую нужно превратить в код 1.  Right-click –> save XML 2.  Использовать API

inspector 3.  Запрос конфигурации из

APIC при помощи REST

36

Выберите "only configuration" и "subtree"

Page 37: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Использование arya (2/2)

# arya.py -f accportprof-vm-vpc10.xml

37

#!/usr/bin/env python'''Autogenerated code using arya.pyOriginal Object Document Input: <?xml version="1.0" encoding="UTF-8"?><imdata totalCount="1"><infraAccPortP descr="" dn="uni/infra/accportprof-vm-vpc10" name="vm-vpc10" ownerKey="" ownerTag=""><infraHPortS descr="" name="vm-vpc10" ownerKey="" ownerTag="" type="range"><infraRsAccBaseGrp fexId="101" tDn="uni/infra/funcprof/accbundle-vm-vpc10"/><infraPortBlk descr="" fromCard="1" fromPort="10" name="block1" toCard="1" toPort="10"/></infraHPortS></infraAccPortP></imdata>'''raise RuntimeError('Please review the auto generated code before ' + 'executing the output. Some placeholders will ' + 'need to be changed')

# list of packages that should be imported for this code to workimport cobra.mit.accessimport cobra.mit.requestimport cobra.mit.sessionimport cobra.model.infraimport cobra.model.polfrom cobra.internal.codec.xmlcodec import toXMLStr

# log into an APIC and create a directory objectls = cobra.mit.session.LoginSession('https://1.1.1.1', 'admin', 'password')md = cobra.mit.access.MoDirectory(ls)md.login()

# the top level object on which operations will be madepolUni = cobra.model.pol.Uni('')infraInfra = cobra.model.infra.Infra(polUni)

# build the request using cobra syntaxinfraAccPortP = cobra.model.infra.AccPortP(infraInfra, ownerKey='', name='vm-vpc10', descr='', ownerTag='')infraHPortS = cobra.model.infra.HPortS(infraAccPortP, ownerKey='', type='range', name='vm-vpc10', descr='', ownerTag='')infraRsAccBaseGrp = cobra.model.infra.RsAccBaseGrp(infraHPortS, fexId='101', tDn='uni/infra/funcprof/accbundle-vm-vpc10')infraPortBlk = cobra.model.infra.PortBlk(infraHPortS, name='block1', descr='', fromPort='10', fromCard='1', toPort='10', toCard='1')

# commit the generated code to APICprint toXMLStr(infraInfra)c = cobra.mit.request.ConfigRequest()c.addMo(infraInfra)md.commit(c)

Готовый Cobra script для создания профиля vPC

Остается добавить APIC IP и credentials а так же удалить предупреждение о том что код без проверки запускать нельзя

Page 38: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

ACI toolkit

Page 39: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

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

39

ACI предоставляет: REST API Полностью открытая модель объектов Доступ при помощи JSON или XML Python SDK для доступа к объектам Но…. Существенные затраты на обучение

§  5000+ классов §  Новые концепции

Page 40: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы
Page 41: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Почему появился ACI Toolkit?

41

Снижение входного барьера Адресовать 80% сценариев использования Дать примеры скриптов конечным Заказчикам Ускорить процесс перехода на ACI

Page 42: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Инфраструктура как код!

https://github.com/datacenter/acitoolkit http://datacenter.github.io/acitoolkit/

Cisco ACI Toolkit

42

Page 43: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

ACI Toolkit CLI интерфейс: network, security, cloud, application

APIC

ACI Toolkit

NX-OS like CLI

Custom Python Scripts

•  Основан на открытых APIC API

•  Скрипты, написаны при помощи Toolkit просто создавать и редактировать

•  Пока нет полной функциональности, наиболее часто используемые операции

•  Фокус в основном на конфигурацию

Page 44: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Tenant

Context / VRF

Subnet

Bridge Domain

Outside EPG

EPG

App. Profile

Taboo

Contract

Filter Entry

L3 Interface

L2 Interface

Interface

Node

Link

POD

1

* * 1 * * 1

1

* *

* * *

*

Provide / Consume

1

* *

*

*

*

1 1

* *

1

*

Provide / Consume

*

*

1

1

* 1

1

1 1

1

1 * 1 *

1

2

1

*

1

*

1

*

Network Physical Policy

Jan/2015

ACI Toolkit Модель политик

Page 45: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Скрипты

Очень просто начать процесс разработки и отладки

Page 46: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Приложение «CLI»

Эмуляция NX-OS CLI полностью написаная на Python Использует возможности toolkit Знакомый интерфейс для сетевого инженера Фокус на задачах поддержки

§  show epg §  shutdown / no shutdown на interface

Page 47: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Приложение «Cable Plan»

47

Дает возможность импортировать существующий кабельный план :

§  XML файла §  APIC

Выполнить экспорт и сравнение загруженных ранее кабельных планов Advanced use can build cable plan XML file, query, and modify cable plan

Page 48: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Приложение «ACI Endpoint Tracker»

Отслеживает подключение и историю перемещений оконечных Сохраняет данные в open source MySQL Database, давая возможность выполнять собственные запросы Основа для средств визуализации Помогает ответить на следующие вопросв:

§  Какие Endpoint подключены к сети? §  Куда подключен определенный

Endpoint? §  Кто был подключен в прошлый Четверг между 3:30am и 4:00am?

§  История перемещения определенного Endpoint?

48

Page 49: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

VMware vCenter Plugin View

49

Page 50: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

VMware vCenter Plugin View

50

Page 51: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

Hello_world J

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 51

Page 52: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения Tenant - контейнер для хранения сетевых свойств приложений

Tenant: Hello_Connect

Page 53: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 53

Пример создания объекта “Tenant”

Название

Page 54: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения Логическая модель: private network, как набор изолированных сетевых сегментов, или VRF

Tenant: Hello_Connect VRF: VRF_INSIDE

Page 55: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 55

Пример создания объекта “VRF”

Добавляем VRF

Название VRF

Режим реализации политик

Удобно переключиться в режим «Unenforced» во время откладки

контрактов между EPG

Page 56: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения Bridge Domain логическая конструкция обозначающая границы L2-сегмента

Bridge Domain: 10.0.0.1_255.255.255.0

Tenant: Hello_Connect VRF: VRF_INSIDE

Page 57: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Новая концепция: Bridge Domain

Bridge Domain - логическая конструкция представляющая L2-сегмент передачи данных внутри фабрики Один или несколько EPG могут быть ассоциированы с одним BD Можно «превратить» в аналог VLAN: 1.  Влючить flood для L2

unknown unicast 2.  Включить ARP Flooding

Название BD удобно сделать «говорящим», например

использовать для этого адрес и маску подсети

Page 58: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения Знакомая концепция: подсети – primary/secondary IP адреса на SVI-интерфейсах

Bridge Domain: 10.0.0.1_255.255.255.0

Tenant: Hello_Connect VRF: VRF_INSIDE

Secondary 10.1.1.x/24

Primary 10.0.0.x/24

interface vlan123 ip address 10.0.0.1 255.255.255.0 ip address 10.1.1.1 255.255.255.0 secondary

Page 59: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 59

Настройка подсети

Адрес шлюза по умолчанию для подсети

Область видимости

Page 60: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Новая концепция: профиль приложения §  Сетевой профиль приложения представляет собой набор EPG и политик, которые определяют правила взаимоотношений между группами

Inbound/Outbound политики

Сетевой Профиль Приложения

Inbound/Outbound политики

EPG A Service A

Service A

Service A

Service A

Service B

Service B

Service B

Service B

EPG B Service C

Service C

Service C

Service C

Service C Service C

EPG C Service D

Service E

Service D

Service E

Page 61: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения Сетевой профиль ANP содержит один или несколько EPG

Bridge Domain: 10.0.0.1_255.255.255.0

Tenant: Hello_Connect VRF: VRF_INSIDE

vPC_to_UCS_a vlan-10

vPC_to_UCS_b vlan-10

EPG: db Security Zone

vPC_to_UCS_a vlan-20

vPC_to_UCS_b vlan-20

EPG: app Security Zone

ANP: Hello_world Нет контрактов = нет передачи данных

vPC_to_UCS_a vlan-30

vPC_to_UCS_b vlan-30

EPG: web Security Zone

Secondary 10.1.1.x/24

Primary 10.0.0.x/24

Page 62: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 62

Создание профиля приложения

Название профиля

приложения

Мастер создания EPG Мастер создания контрактов –

активируется после создания EPG

Page 63: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Новая концепция: EPG

63

Ø Интерфейс, при помощи которого конечное устройство подключается к сети

Ø Имеет адрес (identity), местоположения, атрибуты (version, patch level)

Ø Может быть физическим или виртуальным Примеры:

§  End Point Group (EPG) определяются при помощи: —  Физический портов (leaf или FEX) —  Логический порт (VM port group) —  VLAN ID —  VXLAN (VNID) —  IP адрес (применимо ко внешним подключениям external/border leaf) —  IP Prefix/Subnet (применимо ко внешним подключениям external/border leaf) —  Атрибуты виртуальных машин (план)

Сервер

Виртуальные машины или контейнеры

СХД

Клиенты

Page 64: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 64

Создание EPG

Название EPG

Ассоциация с BD (помещение EPG в L2-сегмент)

Ассоциация c VMM-доменом

(создание портовых групп

на DVS)

Ассоциация c физическими портами/Port-channel/vPC для

невиртуализированной нагрузки

Page 65: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Золотое правило EPG

•  Если есть EPG, значит должен быть и контракт!

•  Данные между EPG без контракта который явно это разрешает не передаются

•  Это касается •  Трафика между EPG в одном

ANP •  Трафика между EPG разных

ANP •  L2 OUT EPG •  L3 OUT EPG •  и т.д. и т.п.

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 65

Page 66: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Новая концепция: контракт

Subject-этокомбинацияследующихдействийcтрафиком-фильтрация,передачачерезService

GraphиQoS-приоритезация

Контрактыопределяютправила

взаимодействиямеждуEPG

Filter | L4-L7| QoS Subject

TCP Port 80 Фильтр

Service Graph

L4-L7 сервис

QoS Priority QoS

Контракт1 Subject 1

Subject 2 Subject 3

Page 67: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения Контракты необходимы для управления передачей данных между EPG

Bridge Domain: 10.0.0.1_255.255.255.0

Tenant: Hello_Connect VRF: VRF_INSIDE

vPC_to_UCS_a vlan-30

vPC_to_UCS_b vlan-30

EPG: app

Контакт = передача данных ANP: Hello_world

vPC_to_UCS_a vlan-10

vPC_to_UCS_b vlan-10

EPG: db 192.168.10.13 192.168.10.12

Secondary 10.1.1.x/24

Primary 10.0.0.x/24

192.168.10.11 192.168.10.10

Нет контракта = нет передачи данных

Контакт = передача данных

vPC_to_UCS_a vlan-30

vPC_to_UCS_b vlan-30

EPG: web Security Zone

Page 68: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 68

Создание контракта

Название контракта

Фильтр

Ссылка на сервисную цепочку

Класс качества обслуживания

Page 69: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Создание профиля приложения

23.11.15 © 2015 Cisco and/or its affiliates. All rights reserved. 69

Применение контракта к EPG Источник/Source/Provider Получатель/Desanaaon/Consumer

Page 70: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

Tenant: Hello_Connect

Создание профиля приложения Картина целиком

Bridge Domain: 10.0.0.1_255.255.255.0

Гипервизор (стоечные сервера)

Гипервизор (Cisco UCS)

Физические сервера БД

L2+L3 сеть

L4-L7 устройства

ANP: Hello_world

vPC_to_UCS_a vlan-30

vPC_to_UCS_b vlan-30

EPG: web Security Zone

vPC_to_UCS_a vlan-30

vPC_to_UCS_b vlan-30

EPG: app

Контакт = передача данных

Primary 10.0.0.1/24

vPC_to_UCS_a vlan-10

vPC_to_UCS_b vlan-10

EPG: db

Контакт = передача данных

Page 71: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы

CiscoRu Cisco CiscoRussia

Ждем ваших сообщений с хештегом #CiscoConnectRu

CiscoRu

Спасибо Хаванкин Максим cистемный архитектор, CCIE [email protected]

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

Page 72: Мастер для ЦОД управления (API) архитектурой …...для управления инфраструктурой ЦОД Программные интерфейсы