てくなべ (tekunabe)

ansible / network / automation

DevNet Express for DNA [Tokyo] イベント参加レポート: Python と Postman と API たち

f:id:akira6592:20191212002250p:plain:w300

■ はじめに

2019/12/10-11 に開催された、DevNet Express for DNA [Tokyo] に参加してきました。 ネットワークプログラマビリティをテーマにした、ハンズオンを含むインベントです。

「for DNA」とついているのは、Cisco DNA Center という製品を中心としたエンタープライズ領域向けという位置づけのようです。とはいえデータセンターなど他の領域でも共通の部分は多分にありました。

Python の基礎からはじまり、様々な製品の API に触れられるとても楽しいイベントでした。

ざっくり言うと、DevNet の以下の日本語コンテンツにそったハンズオンです(CMXは対象外)。

developer.cisco.com

コードはこちら

github.com

この記事では、学習したことの概要や感じたことなどをまとめます。

参加したいと思った理由

モデル駆動型プログラマビリティに興味があったり、Meraki や DNA Center を触るハンズオンをしたかったので参加させていただきました。また、2020/02/24 のシスコ認定資格の大改訂と同時に始まる DevNet Associate Exam v1.0(200-901) などの、ネットワークプログラマビリティ・自動化型の認定試験の資格のとっかかかりとしても有用なのではと思い、参加しました。

実際は応募が多数で抽選制だったようです。運が良かったです。ありがたい・・。


■ 日程

こちらのPDFからタイトル抜粋)

1 日目: 12/10
09:00 ~ 09:30 受付
09:30 ~ 10:00 オープニング
10:00 ~ 13:00 REST, プログラミング, Python の基礎と概要
13:00 ~ 14:00 昼食
14:00 ~ 15:30 コントローラを使ってデバイスを管理する: DNA Center の概要
15:30 ~ 16:00 DNA Center: ミッション
16:00 ~ 17:30 デバイスを直接管理する:モデル駆動型プログラマビリティの概要
17:30 ~ 18:00 モデル駆動型プログラマビリティ: ミッション
18:00 ~ 20:00 懇親会

2 日目: 12/11
09:30 ~ 09:55 受付
09:55 ~ 10:00 オープニング
10:00 ~ 11:30 Guest Shell を使ってユーティリティと Python スクリプトをルータとスイッチ上で直接実行する
11:30 ~ 12:00 Guest Shell: ミッション
12:00 ~ 13:00 昼食
13:00 ~ 14:30 NFVIS を使ってネットワーク機能の仮想化 (NFVIS) を実現する
14:30 ~ 15:00 NFVIS: ミッション
15:00 ~ 16:30 Meraki API を使って、Meraki ネットワークの設定、管理、モニタリングを自動化する
16:30 ~ 17:00 Meraki API: ミッション
17:00 ~ 17:30 クロージング


■ 1日目にやったこと・感想

環境の確認

利用するツール類は、Python、git、Postman、ブラウザあたりです。ひとりずつ専用のラボ環境が用意されいて、そこに一通りいたので、そこに RDP で入るか、同等の手元の環境を使うか、といった感じでした。

Python 基礎

Python については、Hello, World の表示から始まり、リストやディクショナリなどのデータ構造、if や for などの制御分の説明もあったのっで、プログラミング初心者にもやさしい内容だったと思います。

git も少し触りましたが、確か git clone のみだったので難易度は高くないです。

API の基礎

API でよく利用されるデータフォーマットである、JSON の説明もありました。データをうまく料理するには、読み方はちゃんとおさえておきたいところですよね。

API を叩くには Postman を利用しました。プログラムや curl コマンドではなく、このようなツールを利用するのはとっつきやすいと思いました。

DNA Center と API

いままで画面をちらっと見たくらいでしかなかった DNA Center の API を Postman や Python から叩くハンズオンを行いました。

Python の方は「ミッション」と呼ばれる、穴埋め課題も用意されていました。 完成して実行してうまくいくと、Webex Teams に投稿される様になっていたので「えっ、誰かもうできたの!?」と思ったり、ちょっとゲーム要素がありました。

この方式のミッションはこのハンズオンでもたびたび出てきました。

f:id:akira6592:20191211225938p:plain
DNA Center の API ドキュメント画面

モデル駆動型プログラマビリティ

NETCONF、YANG、RESTCONF の概要を座学で学んだあと、NETCONF の Python クライアントである ncclient を使用したスクリプトを実行したりしました。

NETCONF の各オペレーション(<get><edit-config> など)と、RESTCONF の各メソッド(GETPOST など)の対応の説明があり、頭の整理ができて良かったです。

また、NETCONF については、モデルを調べるのに便利ANX (Advanced NETCONF Explorer)というツールがあることを知れました。


■ 2日目にやったこと・感想

Guest Shell

ネットワーク機器上で LXC コンテナが動き、その中で Python スクリプトなどを実行できる仕組み。 EEM と組み合わせて、コンフィグに変更があったときに、Webex Teams に差分を通知するという Python スクリプトを仕上げたりしました。

f:id:akira6592:20191212003145p:plain
無事にコンフィグ差分が Webex Teams に投稿された様子

正直、いままでは使いみちがピンとこなかったのですが、ネットワーク機器自身に自律的になにかやってほしいときには良いのかなと思いました。

NFVIS と API

ネットワーク機器に特化したハイパーバイザ、NFVIS。初めて知りました。これもやっぱり API を備えていて、Python から情報を取得したり、VMをデプロイしたりしました。

Cisco には NFV 向けの Enterorise Network Compute System(ENCS) というハードウェアがあることも初めて知りました。ネットワーク機器とサーバーの間のようなインターフェースを持つ機器のようです。

MerakiAPI

大きく分けて、Dashboard API、Scanning API、Captive Portal APIがって、前者2つを触りました。

APIドキュメントはこちらで、実際に試せました。

最後のハンズオンということもあり、少し慣れてきました。


■ まとめ

丸2日間、たっぷり楽しめました。あまり知らない製品もありましたが、概要の説明があってからのハンズオンだったので、なにをやっているのかがイメージしやすかったです。

さまざまな製品の API を叩きましたが、API ドキュメントの調べ方は少し難しかったです。調べ方がうまくできるようにあると、もっと作業が捗るんだろうなと思いました。

また「ネットワークエンジニアもプログラミングが求められる時代」となんとかく言われる雰囲気はありますが、Python の基礎を延々と繰り返したり、Webアプリケーションを作ったりするよりも、今回のようにネットワークエンジニアに馴染みのある機器の操作するほうがとっつきやすいかも知れません。

ありがたいことに、DevNet Sandbox や、dCloud によって個人で無料で触れる環境があるので、今後もいろいろ触ってみたいと思います。

主催の Cisco のみなさま、ありがとうございました!

おまけ

f:id:akira6592:20191211224314p:plain:w400
参加者プレゼントのTシャツと、ミッションクリア上位者向けのタンブラーとワイヤレス充電器

f:id:akira6592:20191211224455p:plain:w400
ミッションクリアの証、「みました!」がなんだか懐かしい