Skip to content

Cisco CML

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 に設定する」ことで回避することが出来ました。