Skip to content

Cisco CML

CML の Reference Platform に同梱されている yaml ファイル

現時点で最新の Cisco CML は バージョン 2.7.0 です。 CML は「CML 本体」と別に「起動するノードイメージ」を集めた Reference Platform を併せて利用するのが一般的です。 CML へノードを追加するには「ノードそのもののイメージファイル」とは別に、下記のふたつが必要になります。

  1. Node definition
  2. Iamge definition

今回は現時点で最新の Reference Platform に含まれている Node definition と Image definition の .yaml ファイルをメモしておきます。

CML でノードライセンスを消費するノード・消費しないノード

CML 上でワークベンチ上へノードライセンス数を超えるデバイスを配置することは可能ですが、「同時に起動出来るノード数は、ノードライセンス以下」です。 但し、一部のノードはノードライセンスを消費しません。 今回は「CML でのノードライセンス上限や消費数の確認方法」や「ノードライセンスを消費する・しないノード」をメモしておきます。

CML の Timezone 設定を変更する

Cisco CML で Timezone 設定を変更する手順をメモしておきます。 但し、CML 上で Workbench を新規作成した際、Workbench 名に含まれる日時は Timezone を無視し、UTC になるようです。

詳細は後述しますが、Web サイトを日本語表示した状態で Cockpit から Timezone 設定を変更しようとするとエラーになってしまいました。 英語表示へ変更することで解決し、設定出来ました。 但し、CLI で設定変更した方が簡単だと思います。

CML でノードの起動時間を取得する

Cisco CML で「一定時間以上、起動しているラボは停止する」という処理を実装しようと思ったのですが、ラボには「作成時間」や「起動時間」というプロパティが存在しないようです。 代替手段として「機器へ TELNET / SSH して uptime を取得する」という方法もあるかもしれませんが、イマイチです。 ラボそのものには「起動時間」のプロパティが無いものの、ノードには「起動時間を示すプロパティ」があるようです。 今回はその値を取得する Python のサンプルプログラムをメモしておきます。

Terraform + CML でノードのコンフィグは外部ファイルを参照する

Terraform で CML 上にラボを作成する際、同時に「ノードにコンフィグを流し込む」ことが可能です。 Terraform からノードへ設定を行うには cml2_node (Resource) の configuration を使います。 更にこの流し込むコンフィグを外部ファイルから参照したい場合は Terraform の file Function を利用することで実現出来ます。

但し、file Function を使って外部ファイルを参照させても CML Provider のバグなのか、以下のエラーになってしまいました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cml2_node.dev1: Creating...
╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to cml2_node.dev1, provider
│ "provider[\"registry.terraform.io/ciscodevnet/cml2\"]" produced an unexpected new value:
│ .configuration: was cty.StringVal("hostname dev1\r\n!\r\nend"), but now cty.StringVal("hostname
│ dev1\n!\nend").
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.

このエラーは「外部ファイルの改行コードを (CRLF では無く) LF に設定する」ことで回避することが出来ました。