Cisco ACI Programmability

Cisco ACI のプログラマビリティについて
1
Takao Setaka @twtko

#CLUS DEVNET-2000 “ACI Programmability Fundamentals”より #CiscoACI の管理は完全にObject Modelに基づいたAPI Firstな実装さがされており、標準で提供されているWeb UI自体はもちろん、SDK, CLI, 各種連携も全てREST APIを通じた制御として実装されています。 pic.twitter.com/iYvLSnUbA1

2018-10-29 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI のObjectはroot (uni)を頂点とした一意のURIとなるDNを持ちます。ObjectにはClassが紐付いており、Objectの型を定義しています。たとえば、テナントを示すClassはfvTenantであり、”Heroes”という名前のテナントはuni/tn-Heroesとして表されます。 pic.twitter.com/tmtJWwzSmr

2018-10-29 08:28:00
拡大
Takao Setaka @twtko

#CiscoACI のAPIはRESTとして実装されておりHTTP/HTTPSを通じて利用します。クラスタを構成するいずれのAPICに対してもAPIを発行することが可能となっており、データグラムの形式はJSONとXMLの両方に対応しています。 pic.twitter.com/C6x3Jle0Rv

2018-10-30 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI のREST APIでは、GET/POST/DELETEが利用されています。みんな大好きPOSTMANを使って、簡単にAPIの実行と結果の確認を行うことが可能です。 pic.twitter.com/mtgUedxpVW

2018-10-30 08:28:00
拡大
Takao Setaka @twtko

#CiscoACI はローカルのみならずLDAPやRADIUS等、様々な認証方式に対応していますが、APIとしてはログイン処理の実行後はTokenが利用されます。Postman等ではSession CookieとしてTokenが保持されるため、続く処理で利用することが可能です。 pic.twitter.com/QEj8zLZeuF

2018-11-01 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI で全てのTenantのリストを取得したければ、/api/node/class/fvTenant.json に対してGETクエリを送信します。.xmlでも可能です。指定したフォーマットでレスポンスが返されます。 pic.twitter.com/21Q5UsdUkm

2018-11-01 08:28:00
拡大
Takao Setaka @twtko

#CiscoACI でTenantを作成するには、/api/node/mo/uni.json に対してfvTenant ClassをPOSTします。もちろん .xmlでも可能です。レスポンスコードとBodyで実行結果を判定することが可能です。 pic.twitter.com/CqZYjglvDd

2018-11-01 08:38:00
拡大
Takao Setaka @twtko

#CiscoACI のREST APIはそのまま活用しても勿論いいのですが、Scriptingや開発を助けるSDKやToolkitと呼ばれるWrapupなどが用意されています。 pic.twitter.com/sUSmilDZ8n

2018-11-02 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI Toolkitは、ACIのAPIを100%カバーするものではありませんが、最も容易にScriptingやAPIを活用したアプリケーション作成を可能とするPython Libraryです。GitHubでコードは公開されており、豊富なSample Script / Applicationが含まれています。 pic.twitter.com/Y9yfOwMM6o

2018-11-02 08:28:00
拡大
Takao Setaka @twtko

#CiscoACI Toolkitが提供するPython Libraryはとてもシンプルに使うことが可能です。APICから情報を取得する程度であれば、わずか数行のコードで実装することが可能となっています。Sample Scriptもあるので、参考にすることができます。 pic.twitter.com/qjjsuj6DG0

2018-11-02 08:38:00
拡大
Takao Setaka @twtko

#CiscoACI ToolkitのSample Scriptはそのままでもご利用頂けます。コメントや構文も明確なので、まずは同じ処理や組み合わせた処理をSample Scriptを参考にして書いて実行してみると良いでしょう。APIC Simulatorを利用することもできますし、DevNetにあるAPIC Sandboxを利用することも勿論可能です。 pic.twitter.com/djRCkAxVoJ

2018-11-02 08:48:00
拡大
Takao Setaka @twtko

#CiscoACI Toolkitに含まれるSample Applicationは、ACI ToolkitのLibraryを活用してDjangoなどでWeb UIを通じた情報の整形やグラフ化、取得、参照を行うサンプルとなっています。 pic.twitter.com/16S92rWKyF

2018-11-05 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI Cobra SDKはPython用のSDKです。基本的にはREST APIと対になっており、Pythonを用いてACIの情報を活用する本格的な開発に利用することができます。Cobra SDKはAPICに含めて提供されています。 pic.twitter.com/v6gJL6Z6Zc

2018-11-05 08:28:00
拡大
Takao Setaka @twtko

#CiscoACI のAPIを活用する方法としてこれまで最も簡単な方法はACI Toolkitの利用でしたが、今ではAnsibleのPlaybookが最も簡単な方法と言えるかもしれません。Ansible 2.4以降ではACIの操作を可能とするモジュールが標準で含まれる様になっており、継続的にモジュールの追加と拡張が行われています。 pic.twitter.com/ZtL3Ji7MdV

2018-11-06 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI & #Kubernetes みたいな、ちょっと試すだけなのに実環境をいじるのは大事、って時にも #CiscoDevNet のSandboxは便利です。 pic.twitter.com/6fSmNknbJY

2018-11-09 08:38:00
拡大
Takao Setaka @twtko

#CiscoACI のコントローラAPICのみならず、 #CiscoUCS 全モデルには標準でリモート管理を可能とするCisco IMCが搭載されており、Serial Over LAN機能とvMedia機能を組み合わせることによって遠隔でCLIベースでのOSインストールやAPICの再インストール等を行うことが可能です。 learningnetwork.cisco.com/docs/DOC-35732 pic.twitter.com/gmm5sevSIY

2018-11-12 08:18:00
拡大
Takao Setaka @twtko

#CiscoACI のAPICの機能やUIを拡張することができるAppCenter機能には、便利なAppが多数公開されています(ご自身で開発することももちろん可能です)。 StateChangeCheckerは、2時点の構成情報のSnapshotを比較し、差分を表示してくれる運用管理にメリットのあるアプリです。 learningnetwork.cisco.com/docs/DOC-35759 pic.twitter.com/W6pKr37gHF

2018-11-12 08:28:00
拡大