Skip to content

macOS で CML 2.6.0 の Breakout Tool を利用してコンソール接続する

Cisco CML に関して、以前に以下のメモを書きました。

大きく変わったわけではありませんが、改めて現時点の (ほぼ) 最新である 2.6.0 での Breakout Tool インストール手順をメモしておきます。

Step.1

CML へログインし、ToolsBreakout Tool をクリックします。

file

Step.2

左側のナビゲーションメニューから Download をクリックします。

file

Step.3

自身の環境に合わせたバイナリをダウンロードします。 今回は Apple Silicon な mac で試したので、Apple Silicon 用のバイナリをダウンロードしました。

file

Step.4

ダウンロードしたバイナリは任意のフォルダに移動します。 今回はパスが設定済みの場所にすべく、/usr/local/bin/ へ移動しました。 また、ファイルの所有者や権限も修正しておきます。

1
2
3
sudo mv ~/Downloads/breakout-darwin-arm64 /usr/local/bin/
sudo chown root:wheel /usr/local/bin/breakout-darwin-arm64
sudo chmod 755 /usr/local/bin/breakout-darwin-arm64

Step.5

Breakout Tool はデフォルトで「IPv6 ローカルアドレスの TCP/8080」を Listen します。 私の環境では都合が悪かった為、明示的に「IPv4 ローカルアドレスの TCP/8080」を Listen するよう、事前に設定しておきます。 また、「CML のログイン情報」などは Breakout Tool の Web UI 上から設定出来るのですが、この時点で設定してしまいます (後ほど、Web UI から設定することも可能です)。 今回は設定ファイルの位置を ~/config.yaml としますので、このファイルを以下の内容で新規作成します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
console_start_port: 9000
controller: https://10.0.0.1
extra_lf: false
lab_config_name: ~/labs.yaml
listen_address: '127.0.0.1'
password: password
populate_all: true
ui_server_port: 8080
username: admin
verify_tls: false
vnc_start_port: 5900

自身の環境に合わせて下記あたりは修正します。 尚、populate_all はデフォルトで false です。 この設定が false の場合、「ノードの状態が started なものだけを Breakout Tool 上に表示する」という動作をします。 私の場合は「started 以外のノードも表示させたい」ので true を設定します。

項目 意味
controller CML のアドレス
password CML のログイン用パスワード
username CML のログイン用ユーザ名
verify_tls CML 接続時に証明書の検証を行うか?を設定

Step.6

Breakout Tool を Web UI 付きで起動させるには以下のように実行します。 デフォルトでは設定ファイルを「Breakout Tool のバイナリと同じディレクトリ内で探す」という動作をします。 今回はユーザのホームフォルダに設定ファイルを保存している為、明示的に -config-labs オプションで設定ファイルの位置を指定しています。

1
/usr/local/bin/breakout-darwin-arm64 -config ~/config.yaml -labs ~/labs.yaml ui

この実行方法でも問題は無いのですが、毎回ターミナルからコマンドを実行するのが面倒です。 そこで「Breakout Tool の起動」を Apple Script 化します。 Script Editor を起動し、New Document をクリックします。

file

Script Editor に以下を起動します。 tell application "Terminal" でターミナルを起動し、do script で Breakout Tool を起動しています。

1
2
3
tell application "Terminal"
 do script "/usr/local/bin/breakout-darwin-arm64 -config ~/config.yaml -labs ~/labs.yaml ui"
end tell

file

入力が完了したらファイルを保存します。 今回は以下の 3 点を指定しました。 今回、作成したスクリプトはファイル形式を「アプリケーション形式」にしつつ、/Applications フォルダへ保存することで RaycastAlfread のようなランチャーソフトから手軽に実行出来るようにしました。

項目
ファイル名 BreakoutTool.app
保存場所 Applications ディレクトリ
ファイル形式 Application 形式

file

Step.7

ランチャーソフトから起動する際の視認性を向上させる為、作成した .app ファイルのアイコンを任意のものに差し替えておきます。 作成した /Applications/BreakoutTool.app の「ファイルの情報」を開くと以下のように表示されます。

file

デフォルトでは「巻物 (スクロール)」のようなアイコンが表示されています。 ここに任意のアイコンをドロップすることでアイコンを差し替えることが出来ます。 今回は flatficon さんが提供しているアイコンを利用させて頂きました。 (※ このアイコンを無償利用する場合は「Connected icons created by HJ Studio - Flaticon」というクレジットを記載しておきなさい、ということでしたの転記させて頂きます)

file

Step.8

初回起動時だけ、以下のようにセキュリティの警告が表示される場合があります。 これは OK をクリックします。

file

Step.9

私は普段、ターミナルソフトウェアとして iTerm2 を利用しているのですが、TELNET プロトコルハンドラーが (iTerm2 では無く) macOS 標準の Terminal に関連付けられていました。 これを変更する為、iTerm2 でデフォルトとは別に「TELNET」という名前のプロファイルを作成しました (※ 今回は既存の「★Default」プロファイルを複製しました)。 新規作成したプロファイルは Command から Command を選択し、右側に以下の文字列を入力します。 現在の macOS は TELNET が標準で付属しない為、Homebrew でインストールした為、/opt/homebrew 配下に TELNET のバイナリが存在します。 また、$$HOME$$$$PORT$$ は各々、「ホスト名」と「ポート番号」を意味するマジックワードです。

1
/opt/homebrew/bin/telnet $$HOST$$ $$PORT$$

file

ここまで入力出来たら下部の URL Schemes から telnet を選択します。 これで TELNET ハンドラーが iTerm2 と紐付けられます。

file

TELNET ハンドラーの関連付け変更に関する警告が表示されます。 OK をクリックします。

file

これで「ブラウザ上から TELNET のリンクをクリックすると iTerm2 が起動される」為の準備は完了です。

Step.10

作成したアプリケーション /Applications/BreakoutTool.app をクリックして Breakout Tool を起動します。 この状態でブラウザから http://127.0.0.1:8080 へアクセスすると Breakout Tool の Web UI が表示されます。 本来は Web UI 右上にある Configuration から CML と接続する為の設定を行うのですが、事前に設定済み (~/config.yaml ファイルに定義済み) である為、ここでは CML との接続設定を省略することが出来ます。

デフォルトでは何も表示されないのですが、画面右上にあるリフレッシュマーク (下記側の赤枠部分) をクリックすると定義済みのラボが表示されます。

file

ラボが表示されても、デフォルトでは StatusOff になっており、Breakout Tool から接続することが出来ません。 Status 部分をクリックして On にします。

file

次はラボ名をクリックします。

file

するとノードの一覧と Links の一覧が表示されます。 コンソール接続したいノードの Links をクリックすると iTerm2 上で TELNET が起動し、指定したノードへコンソールアクセスすることが出来ます。

file

これは「コンソール接続」ですので、TELNET や SSH のようにセッションを完全に終了することは出来ません。 その為、不要になれば iTerm2 のタブ自体を閉じてしまって問題ありません。