viptela モジュールを使い CLI から vManage を操作する
pip の viptela モジュールを使うと vManage へのアクセスを SDK や CLI、Ansible Module からアクセスすることが出来ます。 もちろん REST API を直接呼び出しても問題ありませんが、テンプレートの簡単な操作などは (いちいちコードを書くより) viptela モジュールを使う方が簡単です。
今回はこのモジュールを使ってテンプレートをエクスポート/インポートする方法をメモしておきます。 尚、今回の検証は vManage 20.6.1.1 と Ubuntu 21.04 環境で実施しました。
インストール¶
今回は venv 環境を作り、そこに viptela モジュールをインストールします。
mkdir viptela
cd viptela
python3 -m venv venv
source venv/bin/activate
python3 -m pip install viptela
但し、これだけでは six がインストールされず、エラーになってしまいました。 そこで viptela モジュールが依存しているモジュールをインストールしておきます。
curl -LO https://raw.githubusercontent.com/CiscoDevNet/python-viptela/master/requirements.txt
python3 -m pip install -r requirements.txt
ログイン方法¶
viptela モジュールを利用する際、vManage のアドレス、ユーザ名、パスワードの指定には下記、二通りの方法があります。
- vmanage コマンドの引数に指定する方法 (コマンド実行毎に指定が必要)
- 環境変数として定義しておく方法 (コマンド実行毎に指定は不要)
1. viptela コマンドの引数に指定する方法¶
vmanage コマンドの引数として指定するには以下のように実行します。 この方法では引数を利用する都合上、コマンドの実行毎に必要な情報を指定する必要があります。
2. 環境変数として定義しておく方法¶
ふたつ目の方法は必要な情報を予め環境変数として定義しておく、という方法です。
export VMANAGE_HOST='10.0.0.1'
export VMANAGE_PORT='8443'
export VMANAGE_USERNAME='admin'
export VMANAGE_PASSWORD='password'
これで毎回、vmanage コマンドに各種情報を指定することなく、コマンドを実行出来ます。
尚、必要な環境変数が定義されておらず、パラメータが不足している場合は以下のようにエラーとなります。
# vmanage show templates
Usage: vmanage [OPTIONS] COMMAND [ARGS]...
Try 'vmanage --help' for help.
Error: Missing option '--host'.
以降、このメモでは予め必要情報が環境として定義されている前提とします。
show コマンドのヘルプを表示する¶
# vmanage show --help
Usage: vmanage show [OPTIONS] COMMAND [ARGS]...
Show commands
Options:
--help Show this message and exit.
Commands:
ca-type Get vManage CA type
control Show control information
device Show device information
interface Show real-time information
omp Show OMP information
org Get vManage org
policies Show policy information
root-cert Get vManage root certificate
route Show device route information
templates Show template information
vbond Get IP address and port for the configured vBond
テンプレートを一覧表示する¶
# vmanage show templates
DEVICES
NAME TYPE ATTACHED DEVICE TYPES
--------------------------------------------------------------------------
Test1 file 1 vedge-cloud
DEVICE DEVICES DEVICE
NAME TYPE TEMPLATES ATTACHED MODELS
------------------------------------------------------------------------------------
Banner1 banner 0 0 vedge-cloud
テンプレートのエクスポート / インポート¶
全てのデバイステンプレートを .json ファイルにエクスポートする¶
全てのデバイステンプレートを .json ファイルにエクスポートするには下記を実行します。 ですが、実際にはフューチャーテンプレートもエクスポートされてしまいます…
特定のデバイステンプレートを .json ファイルにエクスポートする¶
特定のデバイステンプレートを .json ファイルにエクスポートするには下記を実行します。 この場合も実際にはフューチャーテンプレートもエクスポートされます。
全てのフューチャーテンプレートを .json ファイルにエクスポートする¶
全てのフューチャーテンプレートを .json ファイルにエクスポートするには下記を実行します。 この場合、デバイステンプレートはエクスポートされません。
特定のフューチャーテンプレートを .json ファイルにエクスポートする¶
特定のフューチャーテンプレートのみ、.json ファイルにエクスポートするには下記を実行します。 この場合、デバイステンプレートはエクスポートされません。
テンプレートをインポートする¶
デバイステンプレート / フューチャーテンプレートに関係無く、テンプレートをインポートする場合は以下のように実行します。 --type=device や --type=feature を指定することは出来ますが、(エラーにもなりませんが) 効果はありません。 --file に指定されたテンプレートがデバイステンプレートであればデバイステンプレートとして、フューチャーテンプレートであればフューチャーテンプレートとして、両者が混在していれば両者とも、インポートされます。