はじめに
なるべく前提ツール無しで、AWS上にCisco Modeling Labs(以下CML)の構築を試行してみたのでメモを残します。
よく知られている方法としては、ローカルのVMWareでovaから構築してAMIに変換する方法や、Terraformを用いて自動構築する方法がありますが、ローカルPCへのインストールが難しかったり、AWS上のSubnet構成を限定したかったりすることも多いので、それらの前提無しで構築できるか試してみました。
CMLの準備
今回はCML 2.8無償版を利用します。Cisco Software Downloadページから以下をダウンロードします。
- cml2_f_2.8.1-14_amd64-35-pkg.zip
- refplat-20241016-freetier-iso.zip
EC2インスタンス作成
AWS環境にて以下のインスタンスを作成します。
- マシンイメージ:Ubuntu Server 24.04 LTS
- インスタンスタイプ:m5zn.metal
- セキュリティグループ:SSHを許可する設定
- ストレージ(EBS):100GBもあれば十分
CMLの構築
インスタンスへの接続
sshでインスタンスに接続します。ターミナルは何でも構いません。ユーザ名はubuntu、認証にはAWSで生成したキーペアを用います。
その際に、後々CMLの管理画面やUIにブラウザからアクセスするため、インスタンスの9090
番ポートと443
番ポートにポートフォワーディングの設定をしておきます。今回は、ローカルポートの19090
番ポートと10443
番ポートをそれぞれ対応付けます。
CMLファイルの転送
ダウンロードした以下のファイルをインスタンスに転送します。転送方法はSCPでもS3経由でも構いません。
- cml2_f_2.8.1-14_amd64-35-pkg.zip
- refplat-20241016-freetier-iso.zip
CMLのインストール
CMLのパッケージを展開します。pkgファイルはtarアーカイブです。展開するとdebファイルが現れます。
sudo apt update
sudo apt install unzip
unzip cml2_f_2.8.1-14_amd64-35-pkg.zip
tar xvf cml2_2.8.1-14_amd64-35.pkg
その後、必要に応じて競合パッケージを削除後、CMLをインストールします。
sudo apt remove apport
sudo apt install ./cml2_2.8.1-14_amd64.deb ./iol-tools_0.1.14_amd64.deb ./patty_0.2.15_amd64.deb
管理コンソールへのログイン
次に、管理コンソールにログインするためのパスワードを設定します。Password Generator等で十分な強度のものを生成して使用します。
$ sudo passwd ubuntu
New password:
Retype new password:
passwd: password updated successfully
ブラウザを立ち上げてhttp://127.0.0.1:19090
で管理コンソールページにアクセスします。ポート番号はポートフォワーディングの設定に対応します。
ユーザネームはubuntu、パスワードは先ほど設定したものでログインできます。
Refplatの取り込み
次にRefplatのデータを取り込みます。sshのターミナルに戻り、Refplatのisoを解凍してmountします。
unzip refplat-20241016-freetier-iso.zip
sudo mkdir -p /media/iso
sudo mount ./refplat-20241016-freetier.iso /media/iso -o loop
管理コンソールの CML2 タブの Copy Refplat ISO をクリックして取り込みを開始します。
CML UIへのアクセス
次にUIページにログインするためのアカウントを設定します。パスワードは管理コンソールとは別の、十分に強度のあるパスワードを使用します。
$ sudo /usr/local/bin/virl2-switch-admin.sh
New username[cml2]:
New password:
Repeat password:
The admin username and password have been replaced successfully
ブラウザの別のタブで、https://127.0.0.1:10443
でCML UIにアクセスします。ポート番号はポートフォワーディングの設定に対応します。
ユーザネームは先程のスクリプトで変更してなければcml2、パスワードは設定したものでログインできます。
sshの設定の見直し
CMLのインストールに伴い、sshdの設定が変更されています。引き続きインスタンスにsshでログインする場合は、以下ファイルの設定を変更しておきます。
sudo vim /etc/ssh/sshd_config
以下の2行のコメントアウトを外します。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
設定の変更を適用します。
sudo systemctl restart ssh
sshのポート番号も変更されています。こちらの変更も必要に応じて行います。
$ cat /etc/ssh/sshd_config.d/sshd_virl2.conf
#
# This file is part of VIRL 2
# Copyright (c) 2019-2024, Cisco Systems, Inc.
# All rights reserved.
#
# In CML, port 22 is used by the virl2-sshd service for lab node console access
# Regular ssh service is moved to this port in turn
Port 1122
CML動作テスト
動作確認をしておきます。今回はお試しで2台のAlpine Linuxと1台のL2スイッチを接続し相互にPingが通ることを確認してみます。問題なく動いていますね!
iol-l2-0の設定
enable
conf t
vlan 10
int Vlan10
ip address 192.168.10.254 255.255.255.0
no shut
int Eth0/0
switchport mode access
switchport access vlan 10
no shut
int Eth0/1
switchport mode access
switchport access vlan 10
no shut
alpine-0の設定
sudo ip addr add 192.168.10.1/24 dev eth0
alpine-1の設定
sudo ip addr add 192.168.10.2/24 dev eth0