はじめに
Cisco のエミュレータソフトであるCML2をGoogleクラウドで試します。
こちらの動画を参考にしてます。
AWSにて試した方より安いので、今のところクラウドでやるならこちらがベターですね。
手順の概要
- ローカルPCの仮想化ソフトにてCMLのインストール
- CML2のセットアップ
- CML2のVMエクスポート
- Googleストレージへエクスポートしたファイルのアップロード
- インポート
- 仮想化のネストの有効化やHWの調整など
- インスタンスにてCML2のセットアップ
手順
1.OVFファイルの準備
前半は以前の記事と同一になるので、6.VMエクスポートまで実施します。
2.OVFファイルのアップロード
OVFファイルをCloudストレージへアップロードします。
ナビゲーションメニューのCloud Strage>ブラウザを選択。
バケットが作成できたら、バケット名をクリックして詳細へ移動します。
ファイルをアップロードから、OVFファイルをアップロードします。
(私は例によってエクスポートした3ファイルをアップしました。。)
結構時間がかかるのでお茶して待ちます。
3.GCPのAPI有効化
操作はGoogle Cloud Shellから行います。
Cloud Shellをアクティブにするをクリック。
最初にCloud Buildを有効にします。
初めて行う場合、有効なアカウントがないと怒られます。
$ gcloud services enable cloudbuild.googleapis.com
ERROR: (gcloud.services.enable) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials.
If you have already logged in with a different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
言われた通りのコマンドを実施して、認証します。
認証後、project idが表示されます。
$ gcloud auth login
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A
2.0%3Aoob&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fww
w.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&sta
te=lzmNxVFVmnZC0JrtmwJ3kvuPGw89Fe&prompt=consent&access_type=offline&code_challenge=fNEnter verification code: **** # 上記URLにて表示されたコードをペースト
You are now logged in as [*****].
Your current project is [quantum-reducer-312413]. You can change this setting by running:
$ gcloud config set project PROJECT_ID
再度同じコマンドを実行します。
$ gcloud services enable cloudbuild.googleapis.com
Operation "operations/acf.p2-487738041377-0ed0e42f-7d17-45a1-baab-4f5078e7c662" finished successfully.
続いて下記。
出力まで時間がかかりますが、成功しました。
$ gcloud services enable compute.googleapis.com
Operation "operations/acf.p2-487738041377-4460e93c-2a93-493c-b677-a5b7a5471364" finished successfully.
IAMRoleにprojectの権限を付与します。
最初に自身のプロジェクト情報を確認します。
情報はナビゲーションメニューのホーム>ダッシュボード>プロジェクト情報に記載されてます。
下記のコマンドの"project-id"を自身のプロジェクトIDに、"project-num"をプロジェクト番号の値に変更して一気にペーストします。
gcloud projects add-iam-policy-binding project-id \
--member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
--role roles/compute.admin
gcloud projects add-iam-policy-binding project-id \
--member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
--role roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding project-id \
--member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
--role roles/iam.serviceAccountTokenCreator
4.インスタンスの作成
続いてインスタンスの作成ですが、作成前に必要な情報を確認します。
gsutil URIの確認方法
ナビゲーションメニューのCloud Strage>ブラウザ>該当のバケット名>該当のOVFファイルをクリック
ファイルの詳細情報が表示されるので、gsutil URIをコピー。
インスタンスの作成はGoogle Cloud Shellから行います。
下記コマンドの"INSTANCE_NAME"をお好きな名前に変え、
"gs:PATH_TO_OVF_FILE"はOVFファイルのgsutil URIに変えてください。
1時間近くかかるので待ちます。
gcloud compute instances import INSTANCE_NAME \
--os=centos-8 \
--zone us-central1-b \
--source-uri=gs:PATH_TO_OVF_FILE
進行状況は、
ナビゲーションメニューのCompute Engine>VMインスタンスから確認できます。
作成が完了すると指定したインスタンス名の名前で緑のチェックが入ります。
この時点でインスタンスが起動してます。(この状態で長時間放置してしまいました。。課金注意。。)
5.VMインスタンスの設定
ファイアウォールを設定します。
該当のインスタンス名をクリックし、詳細に移動します。
鉛筆マークの編集をクリックし
ファイアウォールの下記二つともチェックボックスをONにして保存します。
6.CML2へログイン
VMインスタンスの一覧から、外部IPアドレスをコピーします。
通常通り、httpsにてコピーしたIPアドレスへアクセス。
もうログインできるかと思いますので、コピーしたアドレスHTTPSへアクセス。
ユーザーアカウントでログインします。
ログイン後、右下のSystem Health Issueをクリックすると2つ問題があります。
Licensingの他にHW AccelerationがチェックNGとなっているので、インスタンスのタイプを変更します。
7.インスタンスのクローン
VMインスタンスをスペック要求に合わせるため、インスタンスをクローンします。
VMインスタンスの一覧に戻り、インスタンスを停止します。
停止したインスタンスをクリックして、詳細に移動します。
ブートディスクのデバイス名をコピーします。
下記のコードの"DISK1"を先程コピーしたデバイス名に置き換えて新たなイメージを作成します。
gcloud compute images create cml2-kvm-image \
--source-disk DISK1 --source-disk-zone us-central1-b \
--licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
少し時間がかかった後の実行結果です。
STATUSがREADYになればOKです。
gcloud compute images create cml2-kvm-image \
> --source-disk cml2-test --source-disk-zone us-central1-b \
> --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
Created [https://www.googleapis.com/compute/v1/projects/quantum-reducer-312413/global/images/cml2-kvm-image].
NAME PROJECT FAMILY DEPRECATED STATUS
cml2-kvm-image quantum-reducer-312413 READY
先程作成したイメージを、cml2-finalという名前のインスタンスで新たに作成します。
gcloud compute instances create cml2-final --zone us-central1-b \
--min-cpu-platform "Intel Haswell" \
--image cml2-kvm-image
8.インスタンスの設定
再度、該当インスタンスのファイアウォールにてHTTPとHTTPSを有効にします。
また、SSHの1122ポートも有効にします。
ナビゲーションメニューのVPCネットワーク>ファイアウォールを選択。
画面上部のファイアウォール ルールを作成をクリック。
名前は適当にcmlとしておきます。
再度、CML2にログインします。
VMインスタンスの外部IPアドレスからHTTPSアクセス。
System Health Issueを見ると、Number of available CPUs が問題ありあそうです。
9.インスタンスタイプの変更
一度ターミナルからssh接続します。
❯ ssh sysadmin@34.69.100.212 -p 1122
電源OFF!
$ sudo poweroff
VMインスタンスの一覧から該当のインスタンスの電源OFFを確認して、インスタンス名をクリック。
編集を選んで、マシンタイプにてn1-standard-8を選択して保存します。
インスタンスを開始します。
IPアドレスを固定したい場合は以下の設定をします。
使ってなくても課金されるので、お好みとお財布状況に合わせて。(私はしません。。)
ナビゲーションメニューのVPCネットワーク>外部IPアドレスを選択。
10.CML2からライセンス登録
CML2にログインして、ライセンスの登録をしたら、完了です!
(説明は以前の記事にもあるので割愛です。)
最後に
AWSのベアメタルタイプと比較しても料金はgoogleの方が断然いいですね。
当然スペック差はありますが、必要に応じて増やしていけるので無駄なコストがかからないです。
最初からGCPでやっていればよかった。。。。