浅草橋青空市場

Microsoft Azure のニュースや情報を中心にあれこれと

Azure CLI 2.0 で仮想マシンのイメージを作る & イメージから仮想マシンを作る

少し手を加えた仮想マシンをイメージ化して展開、みたいなことをAzure CLI 2.0で行う手順です。

CLIによる仮想マシンの作り方はこちらからどうぞ。

asazure.hatenablog.jp

例によってAzure Cloud Shellを使います。

docs.microsoft.com

サブスクリプションの選択

(2017/08/01 追記)
複数のサブスクリプションを扱っている場合には明示的に指定した方が間違いが無いですね。

# 利用可能なサブスクリプションの一覧を見る
az account list -o table

# サブスクリプションを選択する
az account set --subscription [Subscription Id]

(追記ここまで)

仮想マシンのイメージを作る

対象のホストにログインしてdeprovisionを行います。 イメージ化(=汎用化)の前準備で、以下の設定が消えますのでご留意のほど。

  • 全てのSSHホストキー
  • /etc/resolv.conf 内のネームサーバー構成
  • /etc/shadow のrootパスワード
  • キャッシュされたDHCPクライアントのリース
  • ホスト名を localhost.localdomain にリセット

waagentのdeprovisioningオプションについて詳しくはこちらから。

docs.microsoft.com

sudo waagent -deprovision+user -force

この後はすべてAzure CLI上での操作です。
汎用化した後は起動できなくなりますのでご注意を。起動できなくなると困る場合は、先に仮想マシンを複製しましょう(末尾に参考URL記載)。

# 仮想マシンの停止
az vm deallocate --resource-group myRg --name myVm

# 仮想マシンの汎用化
az vm generalize --resource-group myRg --name myVm

# イメージの生成
az image create --resource-group myRg --name myImage --source myVm

イメージが生成できたら、元の仮想マシンは削除しても構いません。

イメージから仮想マシンを作る

続いてイメージから仮想マシンを作ります。 NICと、それに紐付く諸々はあらかじめ用意されている前提です。諸々の生成についてはこちらをどうぞ。 http://asazure.hatenablog.jp/entry/2017/07/31/213107

セキュリティグループとPublic IP、VNETはNICの側で指定しますので、仮想マシン生成時には指定できません。

# 仮想マシンの生成 (パスワード認証)
az vm create --name myVm --resource-group myRg --location japaneast --image myImage --size Standard_DS1 --nics myNic --admin-username myAdminName--admin-password myAdminPassword

# 仮想マシンの生成 (公開鍵認証)
az vm create --name myVm --resource-group myRg --location japaneast --image myImage --size Standard_DS1 --nics myNic --admin-username myAdminName--ssh-key-value ~/.ssh/id_rsa.pub

(参考) 汎用化しない仮想マシンの複製

そのままコピーする場合はこちらをどうぞ。Managed Disksを複製して、NIC等のリソースは新しく用意して作る手順です。Managed Disksのおかげでだいぶシンプルになりましたね。

docs.microsoft.com