Python で CML 上のラボを定期的に自動停止する
以前に以下のメモを書きました。
現状の CML には定期的にラボを自動停止する機能は無く、気がつくと「起動したままのラボ」が乱立している場合があります。 今回は Python + cron で定期的に CML 上のラボを自動停止する方法をメモします。
以前に以下のメモを書きました。
現状の CML には定期的にラボを自動停止する機能は無く、気がつくと「起動したままのラボ」が乱立している場合があります。 今回は Python + cron で定期的に CML 上のラボを自動停止する方法をメモします。
Cisco CML には Tools Menu の中に Sample Labs
という機能があります。 予め所定のディレクトリにワークスペースの構成ファイル (YAML) を配置しておくことで Sample Labs
の一覧画面に表示され、それを Import
するだけですぐにワークスペースを用意出来ます。 また、CML 自体に「サンプルラボをロードする」という API は実装されています。
CML の操作を自動化するには cmlutils や virl2-client を利用することが出来ます。 ですが、Sample Labs
の機能は cmlutils や virl2-client には実装されていないようです。 その為、今回は直接、Python から Sample Labs
機能を利用する REST API を呼び出すサンプルスクリプトをメモしておきます。
Cisco ASA (Secure Firewall) への SSL-VPN を Entra ID と SAML 連携し、SSO する為の設定手順をメモしておきます。 以下の Microsoft 公式サイトにも詳細な説明があります。
以前に下記のメモを書きました。
改めて CML 上での利用を想定した「各機器の検証用コンフィグ・テンプレート」をメモしておきます。
Cisco CML のバージョン情報を取得するスクリプトサンプルをメモしておきます。
Cisco CML 上のノード一覧を表示するスクリプトサンプルをメモしておきます。
Cisco CML 2.8.1 がリリースされていました。 既存環境からのアップグレード手順は CML 2.7.2 へアップグレードする にまとめてあります。
最近の CML は主に以下の 3 要素から構成されています。 Cisco SD-WAN を利用しないのであれば必ずしも Supplemental Reference Platform は必要ありません。 今回の 2.8.1 リリースタイミングでは Supplemental Reference Platform の更新はありませんが、Reference Platform は更新されています。 但し、Reference Platform の変更点は「TRex イメージの差し替え」のみです。 もし TRex イメージを利用していないのであれば、Reference Platform を更新する必要はありません。
今回の更新 | 項目 | 説明 |
---|---|---|
有り | CML 本体 | - |
有り | Reference Platform | TRex イメージのみ、更新されている |
- | Supplemental Reference Platform | 変更無し |
CML 上で IOSv や IOSvL2 を起動すると、明示的に設定していなくても自動的にバナーの設定が追加されてしまいます。 挙動に影響するわけではありませんが、show running-config
を確認する度に「バナー分のコンフィグが長くなって表示される」という点がややデメリットです。 今回はこのバナーを EEM (Embedded Event Manager) を使って自動的に削除するコンフィグ例をメモしておきます。
尚、今回の設定を実施してバナー設定を削除する前後でコンフィグ全体の業務は概ね、以下の差がありました。
OS | 変更前 (初期状態) | 変更後 (EEM 追加後) | 差分 |
---|---|---|---|
IOSv | 138 | 111 | -27 |
IOSvL2 | 112 | 85 | -27 |
Cisco CML 上で動作する IOL (IOL L2) を使って VXLAN EVPN を設定した際のコンフィグをメモしておきます。 IOL は軽量で起動が早い為、気軽に検証することが出来ます。
以前に CML でノードライセンスを消費するノード・消費しないノード というメモを書きました。 CML は「同時に起動出来るノード数」は「インストールされているノードライセンス数」で決定されます。 これはあくまで「同時起動数」であり、起動しなければ無制限にノードを配置出来ます。 ライセンスがインストールされていない場合の挙動はバージョンによって異なります。
バージョン | ライセンス未インストール時の挙動 |
---|---|
2.8.0 未満 | ノードは 1 台も起動出来ない (サードパーティノードであっても起動出来ない) |
2.8.0 以降 | ノードは 5 台まで起動出来る (6 台以上起動するとエラーになる) |
ノードライセンスを超過した場合、Web UI では以下のようなエラーが表示されます。
今回は API アクセスしている場合のエラーをメモしておきます。 API アクセスには Python + virl2-client を用います。