読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

Docker イメージで acitoolkit を手軽に試す

ACI Cisco SDN

Cisco ACI の設定は通常、Web UI で十分に事足ります。しかし、「大量の項目を効率よく設定したい」「作業を自動化したい」という場合はスクリプト (プログラム) を活用するのが便利です。スクリプトから ACI にアクセスする為の手段も幾つかあるのですが、Python を使って簡単なスクリプトから ACI を操作出来る acitoolkit の使い方を覚えておくと便利です。acitoolkit を自分の環境にインストールしてしまうのもひとつの方法ではあるのですが、Docker イメージを使う方法も手軽でオススメです。

ACI へアクセスする手段

ACI へアクセスする手段を表にまとめると概ね以下だと思います。ここにリストアップしたツールでは出来ないような、高度な機能を利用したい場合は UCS Director を利用することになると思います。acitoolkit は「UCS Director を導入する程では無いが、少し自動化にチャレンジしたい」といった場合に有力な選択肢のひとつだと思います。

No. 方法 標準で付属しているのか? 備考
1 Web UI 専門的なコマンドを覚えなくても、ブラウザとマウスで操作可能
2 CLI 専門的なコマンドを覚える必要がある
3 API Inspector 実行されたコマンドの REST API 呼び出しを確認することが出来る
4 Visore GUI で MIT (Management Information Tree) を確認出来る
5 Cobra SDK Pytyon を使って自動化出来る
6 APIC Rest to pYthon Adapter 「arya is a tool that will convert APIC object documents from their XML or JSON form into the equivalent Python code leveraging the Cobra SDK.」とのこと
7 acitoolkit 簡単な Python スクリプトで ACI を操作出来る

acitoolkit の Docker イメージを開始する

acitoolkit のインストール済み Docker イメージも公開されているので、利用は簡単です。以下のように実行すればコンテナが起動します。

docker run -it dockercisco/acitoolkit

実際の実行例は以下ようになると思います。初回は Docker イメージを pull しますので、コンテナの起動までやや時間がかかると思います。2 回目以降は数秒でコンテナが起動すると思います。

$ docker run -it dockercisco/acitoolkit
Unable to find image 'dockercisco/acitoolkit:latest' locally
latest: Pulling from dockercisco/acitoolkit
8aec416115fd: Already exists
695f074e24e3: Already exists
946d6c48c2a7: Already exists
bc7277e579f0: Already exists
2508cbcde94b: Already exists
59428ac89915: Pull complete
fa05f6bef4b9: Pull complete
7c7fc940e2d0: Pull complete
49542e13f86e: Pull complete
ff40e4938a23: Pull complete
Digest: sha256:0939013baeb127a96dd67ca6729895bfe3501458698a79043a0b11a2afa201f6
Status: Downloaded newer image for dockercisco/acitoolkit:latest
root@0dea7b164a0a:/opt/acitoolkit#

ACI へアクセスする為の資格情報を用意する

acitoolkit から ACI へアクセスする際、毎回資格情報(ログイン情報)を求められます。これを省略する為に acitoolkit を利用するスクリプトと同じディレクトリに credentials.py というファイルを以下のような内容で作成します。

LOGIN    = "admin"
PASSWORD = "password"
URL      = "https://10.0.0.1"

但し、現時点の Docker イメージには vim のようなエディタがインストールされていないようなので、以下のようにリダイレクトで credentials.py を作成します。

echo 'LOGIN    = "admin"'            >  /opt/acitoolkit/samples/credentials.py
echo 'PASSWORD = "password"'         >> /opt/acitoolkit/samples/credentials.py
echo 'URL      = "https://10.0.0.1"' >> /opt/acitoolkit/samples/credentials.py

サンプルを実行する

credentials.py が用意出来たらサンプルを実行してみます。最も簡単なサンプルのひとつである、テナントの一覧を表示する「aci-show-tenants.py」を実行してみます。

# cd /opt/acitoolkit/samples
# python aci-show-tenants.py
TENANT
------
common
infra
mgmt

意図した通り、テナントの一覧が表示されました。

より小さな Docker コンテナを利用する

若干… ではありますが、イメージを小さくした Docker イメージを用意しました。公式イメージは Ubuntu ベースなのですが、よりイメージを小さくする為に Alpine ベースでイメージを作成したものも用意しました。

現時点で各々のイメージサイズは以下の通りです。

イメージ名 サイズ 備考
dockercisco/acitoolkit 606MB acitoolkit 公式イメージ
sig9/acitoolkit 593MB 公式イメージに vim-tiny を追加したイメージ
sig9/acitoolkit-alpine 515MB Alpine ベースで作成したイメージ

docker images で確認した結果は以下の通りです。

$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sig9/acitoolkit-alpine   latest              2d6491f29f72        22 hours ago        515 MB
sig9/acitoolkit          latest              99e4bc10840c        22 hours ago        593 MB
dockercisco/acitoolkit   latest              4be477b36e0c        7 days ago          606 MB