- クラウド
- サーバー
- その他
Cisco Modeling Labs on AWS
「AWS」はアマゾン テクノロジーズ インコーポレイテッドの登録商標です。
本記事では、Cisco Modeling Labs(以下、CML)をAmazon Web Services(AWS)上で構築した際の手順と注意点についてご紹介します。CMLはCiscoが提供するネットワークシミュレーションプラットフォームであり、CCNP Enterpriseの学習環境として活用するために構築を行いました。
「Cisco」はシスコ テクノロジー インコーポレイテッドの登録商標です。
CMLのクラウド対応は進んでいるものの、AWS上での構築に関する情報は断片的であったり、古いバージョンに基づいていたりすることが多く、構築には一定の試行錯誤を要しました。本記事が、同様の目的でCMLをクラウド上に展開しようとされている方の一助となれば幸いです。
対象読者
- CMLをAWS上で動作させたい方
- 以下のAWSサービスの基本的な役割をご存知の方
- EC2
- S3
- IAM
構築手順
構築の流れは以下の通りです。
- CMLライセンスの購入
- OVAファイルおよびrefplat ISOのダウンロード
- 手元のPC上のVMware Workstationで仮想マシンを作成し、初期設定を実施
- 仮想マシンをOVA形式でエクスポート
- OVAファイルをAWSにアップロードし、AMIとしてインポート
- AMIからEC2インスタンスを作成
このように、OVA → 仮想マシン → OVA → AMI → EC2インスタンスと複数の形式変換を経る構成となっています。一見すると冗長に見えるかもしれませんが、それぞれのステップには技術的な理由が存在します。詳細は後述します。
本記事は、実際にCML v2.7.2の構築を行った際の記憶を頼りにまとめています。また、一般的なAWSの操作方法など、容易に調べられる内容については省略しています。
Ciscoは、CMLをAWS上に展開するための公式ツール「cloud-cml」をGitHub上で公開しています。このツールはTerraformを用いた自動化ツールチェーンで、現在はバージョン2.9に対応しています。
ただし、2025年9月時点でもこのツールは「BETA」として提供されているため、今回は使用せず手動で構築を行いました。
「GitHub」はギットハブ, インコーポレイテッドの登録商標です。
「Terraform」はハシコープ, インコーポレイテッドの登録商標です。
ライセンスの購入について
Cisco Modeling Labs(CML)のライセンスは、Cisco Learning Network Storeにて購入可能です。
ただしバージョン2.8以降のCMLには、ライセンスがなくても最大5ノードまでの制限付きでシミュレーションを実行できる「CML-Free」機能が提供されています。また、同バージョンから搭載OSがUbuntu 24.04へと更新されています。
https://developer.cisco.com/docs/modeling-labs/2-8/cml-release-notes
「Ubuntu」はキャノニカル リミテッドの登録商標です。
本記事の手順で利用するAWSの「VM Import/Export」サービスでは、サポート対象となるUbuntu・Linuxカーネルのバージョンが決まっています。
https://docs.aws.amazon.com/pdfs/vm-import/latest/userguide/vm-import-ug.pdf
私はCML 2.7.2を構築したのでCML 2.7.2がサポートされているのは間違いありませんが、CML 2.8以降を構築したい場合は念のためカーネルバージョンを確認することをおすすめします。
上記のカーネルバージョンに関する制約をクリアできる,かつ制限付きでも構わない場合は,ライセンスの購入は飛ばしていただいてかまいません。
ovaファイル・refplat ISOのダウンロード
Cisco Modeling Labs(CML)を利用するために必要な「ovaファイル」と「refplat ISO」は、Cisco Learning Network Storeからダウンロードできます。先述したAWS側の制約があるので,ダウンロードするバージョンには気を付けてください。
ovaファイル
ovaファイルは、仮想マシンの構成情報を1つのファイルにまとめた形式であり、VMware Workstationなどの仮想化ソフトウェアで簡単に読み込むことができます。これにより、CML環境を迅速に立ち上げることが可能です。
また、AWS環境においても、VM Import/Export機能を用いることで、ovaファイルをAmazon Machine Image(AMI)としてインポートし、EC2インスタンスとして展開することができます。
refplat ISO
refplat ISOは、CML上でシミュレーションを行う際に必要となる各種ルーターやスイッチのOSイメージを含むISOファイルです。CMLの初期設定時にこのファイルを指定することで、各種ノードの動作環境を整えることができます。
「refplat」という名称はCisco独自の用語かと思われます。
ローカル環境での初期設定
Cisco Modeling Labs(以下、CML)をAWS上で運用するには、事前に仮想マシンの初期設定をローカル環境で行う必要があります。CMLのOVAファイルをそのままAWSにインポートしても、初期設定が完了しておらずリモートアクセスができないため操作は困難です。
そのため、まずはVMware Workstationを用いて仮想マシンの初期設定を行います。
初期設定
VMware WorkstationでOVAファイルを開き、仮想マシンにrefplat ISOを挿入して起動します。初期設定画面が表示され、ユーザー情報やネットワーク設定を求められます。
起動時に以下のようなエラーが表示される場合があります:
Ethernet0 に使用できる PCIe スロットがありません。Ethernet0 を削除してもう一度やり直してください。
この場合は「仮想マシンのバージョンをアップグレード」ボタンを押し、より新しいバージョンを指定することで解決する可能性があります。
初期設定では以下の2種類のユーザーが作成されます:
- 管理者ユーザー(以下「サバ管」):Ubuntuの管理操作を行うためのユーザー
- ラボユーザー:CML上のネットワーク機器操作を行うためのユーザー
ネットワーク設定では、 必ずDHCPを有効 にしてください。AWSでは、EC2インスタンスのIPアドレスはDHCPによって割り当てられます。仮想マシン側で静的IPを設定すると、AWS側のIPと不一致が生じ、通信に支障をきたします。
refplat ISOの内容は初期設定中に仮想マシン本体へコピーされるため、設定完了後はISOの取り外しが可能です。
旧バージョンのCMLではISOを常時挿入して運用する必要があるため、EC2インスタンスとして動かすためには特殊な対応が必要でした。(EC2インスタンスにはリムーバブルディスクとしてストレージをアタッチできません)
初期設定が完了し、ログイン画面が表示されれば、仮想マシンの準備は整いました。
動作確認
初期設定後、HTTPSで仮想マシンの443番ポートにアクセスし、ラボユーザーでログインすることでライセンス認証やラボの操作ができます。
CMLへのアクセス方法一覧:
ポート番号 プロトコル アカウント 利用機能 443 HTTPS ラボユーザー ラボ操作 9090 HTTPS サバ管 cockpit(Web GUI) 22 SSH ラボユーザー コンソールサーバー 1122 SSH サバ管 Ubuntu CLI 1122番ポートはデフォルトで無効化されているため、こちらの手順で有効化してください。
ライセンス認証を行った場合は、AWSへ移行する前に仮想マシンとCMLライセンスとの紐付けを解除してください。CMLライセンスは1台の仮想マシンにしか紐付けできないため、解除しないとAWS上でライセンス認証ができなくなります。
BIOSへの対応とAWS移行準備
CMLのシミュレーション環境におけるルーター・スイッチなどは仮想マシンとして動作します。この記事のゴールはCMLをEC2インスタンスとして動作させることですが、それを実現するためには仮想マシンがEC2インスタンスの中で動作できる必要があります。EC2インスタンス自体も仮想マシンなので、このような構成を「nested virtualization」と呼びます。
AWS EC2のベアメタルインスタンス(*.metal)は、nested virtualizationをサポートする唯一のインスタンスタイプですが、UEFIには非対応です。そのため、仮想マシンをBIOSで起動できるように変更する必要があります。
「UEFI」「BIOS」というのは,コンピューターが起動して最初に起動するファームウェアの種類です。
GPTからMBRへの変換
BIOSはMBR形式のディスクにのみ対応していますが、この時点で仮想マシンに付いているのはGPT形式のディスクです。そのため、以下の手順で変換を行います:
sudo gdisk /dev/sda
- r を入力してリカバリーモードへ
- g を入力してGPT→MBR変換を指示
- w を入力して変更を保存
GRUBの再インストール
UEFI・BIOSの役割の1つがブートローダーをディスクから探して起動することです。しかし、UFEIとBIOSではブートローダーの探し方が違います。そのため、今の状態のディスクからBIOSがブートローダーを見つけることはできません。
そこで、BIOSでも見つけられる位置にGRUB(ブートローダーの一種)をインストールします:
sudo apt update
sudo apt install grub-pc
sudo grub-install --target=i386-pc /dev/sda
マザーボード種別の変更
VMware Workstationの仮想マシン設定ファイル(.vmx)をテキストエディタで開き、以下のように編集します:
chipset.motherboardLayout = "i440bx"
この編集により、仮想マシンのマザーボードがBIOSに対応したものに変更されます。
この変更によりNICが認識されなくなる場合がありますが、AWSにインポートすると解決します。
BIOSでの起動設定
VMware Workstationの仮想マシン設定画面で「詳細」タブに移動し、ファームウェアをUEFIからBIOSに変更します。(NICが認識されないことを除いて)正常に起動すれば、BIOS対応の仮想マシンとしてAWSへの移行準備が整ったことになります。
仮想マシンのエクスポート
AWSで動かせる状態の仮想マシンが完成しましたので,仮想マシンをovaファイルにエクスポートします。
エクスポート操作自体はメジャーな機能なので,手順はインターネットで簡単に調べられます。一見すると拡張子「.ova」がエクスポート先の選択肢の中に無いように見えますが,「.ovf」でエクスポートして拡張子を変えれば問題ありません。
OVAファイルをAmazon EC2のAMIに変換
OVAファイルを直接EC2インスタンスとして起動する方法も存在しますが、AWS公式ではVM Import/Exportを利用してAMIへ変換する方法が推奨されています。そのため、本記事ではAMIへの変換を前提とした手順を紹介します。
OVAファイルをAmazon S3へアップロード
残念ながら、OVAファイルを直接VM Import/Exportに渡すことはできません。まずは、変換対象のOVAファイルをAmazon S3バケットへアップロードする必要があります。
IAMロール「vmimport」の作成
VM Import/Exportでは、実際にS3やEC2へアクセスするのは「vmie.amazonaws.com」というAWSのサービスです。このサービスが必要な権限を得るためには、「vmimport」という名前のIAMロールを事前に作成しておく必要があります。(「vmie.amazonaws.com」は、「vmimport」という名前を持つIAMロールを探して自身に付与しようとします)
IAMロールは以下の2要素からなります:
- 信頼ポリシー(「vmie.amazonaws.com」を、ロールの付与先として許可する)
- アクセス許可ポリシー(S3およびEC2へのアクセスを許可)
詳細なポリシー内容はAWS公式ドキュメントに記載されています。
import-imageコマンドの実行
IAMロールの準備が整ったら、AWS CLIを使用してOVAファイルをAMIへ変換します。以下は基本的なコマンド例です:
aws ec2 import-image \
--description "My server VM" \
--license-type BYOL \
--boot-mode legacy-bios \
--disk-containers '[
{
"Format": "OVA",
"UserBucket": {
"S3Bucket": "your-s3-bucket-name",
"S3Key": "path/to/your-vm.ova"
}
}
]'
--license-typeには、BYOL(Bring Your Own License)を指定してください。AWSがライセンス管理を行うAWSオプションはWindowsなどごく一部の有名なライセンスのみをサポートしているため、CMLのライセンスは自分で管理する必要があります。--boot-modeにはlegacy-biosを指定します。このオプションにより、AWS上で動作するときのファームウェアがBIOSに指定されます。「Windows」はマイクロソフト コーポレイションの登録商標です。
実行後、しばらく待つとAMIが作成されるかと思います。
AMIからEC2インスタンスを作成する
この操作はAWSでも一般的なものなので、解説は割愛します。
前にも述べた通り、インスタンスタイプをベアメタル(「*.metal」)にするのを忘れないようにしてください。
セキュリティグループについては、前にも挙げた22・443・1122・9090の4ポートを許可すれば十分です。
SSHログインできる状態の仮想マシンをAMIにしたので、そのAMIから作成したEC2インスタンスにも同様の方法でSSHログインできます。AWS上で必要な、SSH関連の設定はセキュリティグループだけです。
「EC2インスタンスにSSHログインする」と聞くとキーペア設定を思い浮かべる方が多いかと思いますが、キーペア設定はそれを受け入れられるように構成されたAMIでないと正しく動作しないのでおすすめしません。
ようやく、CMLがEC2インスタンスとして動いてくれました!
AWSの利用料金について
AWSでCMLを動かすにあたって注意しなければならないのが、EC2インスタンスの利用料金です。
ベアメタルインスタンスはかなり高価格な傾向にあり、自分が利用しているm6i.metalではUSD 7.936/h=1169円/h(2025/9/18時点)です。24時間起動したままにしておくだけで28056円、31日だと869736円にもなってしまうので、必要な検証が終わったらすぐにシャットダウンするようにしましょう。
まとめ
長い手順となってしまいましたが、その主な要因はCMLの以下2つの特徴にあると考えています。
- 遠隔から初期設定できない
- 中で仮想マシンを動かす
これら特徴がAWSと上手く嚙み合わず、LinuxやAWSの知識が必要な手順となってしまいました。
実は、筆者はCML環境を構築する間にLinuCレベル1とAWS Certified Cloud Practitionerを取得していました。図らずも、構築の中で扱ったUEFI・BIOSやGRUB、AWSのEC2・S3・IAMなどには資格勉強で得た知識が役立ちました。逆に「座学として学んだだけのものに実際に触れて理解が深まった」ということも何度かあり、CML環境の構築からもとても学びを得たと感じました。
「LinuC」は一般社団法人エデュコの登録商標です。
ベアメタルインスタンスの利用料金が少し痛いですが、CCNP Enterpriseに合格できるように勉強を頑張っていこうと思います!