この機能は、都度仮想マシンが必要になった際に、OSのインストールやアップデート作業など事前作業をスキップすることができるため大変有効な機能だと思います。
では、AHVを利用した場合、これに相当する機能はあるかという疑問がわいてきます。
この記事を書いている環境は、「AOS4.7.2」ですので、今後新しいバージョンではわかりませんが、現段階では、vSphereの仮想マシンテンプレートに相当する機能は存在しないようです。
ただし、仮想マシンのクローンだけでよければ、仮想マシンのコピーはもちろん可能です。
(残念ながら、コピー時にsysprepをかけるとか、ホスト名を変更するなどはできません)
しかし、クローンの元となるゴールドイメージも通常運用する仮想マシンの一覧に上がってくると、謝ってゴールドイメージの仮想マシンの電源を入れて、不要なオペレーションをしてしまうことや、そもそもゴールドイメージの仮想マシンを誤って消してしまうこともあり得るかもしれません。
そういったオペレーションを防ぎ、ゴールドイメージから仮想マシンを展開する機能として、「Image Service」という機能が、AHV版のNutanixには搭載されています。
これは、以前に紹介したHyper-Vからの移行の際にも利用しました。
この機能は、元々ゴールドイメージを管理するためのツールです。
しかし、このImage Serviceは、GUIからですと、既存でAHV上に存在する仮想マシンを、Image Serviceに登録することができません。
ただ、コマンドを利用すればImage Serviceに作成した仮想マシンの仮想ディスクをゴールドイメージとして登録することができます。
今回はその方法をご紹介したいと思います。
まずは、CVMに接続して、テンプレートにしたい仮想マシンのUUIDを調べます。
仮想マシン名称に半角スペース等が入っている場合は、「"」を前後につけてコマンドを実行しましょう。
acli vm.get "仮想マシン名"
すると結果として以下のような結果が出てきます。
VM-Windows Server 2016 { config { annotation: "" disk_list { addr { bus: "ide" index: 0 } cdrom: True container_id: 289271 container_uuid: "dfda6b0f-5a5a-404b-a3dd-b4ff588fbdfd" source_nfs_path: "/Container/.ngt/89b1e252-2b06-4ad0-b59b-a4339cd62784/nutanix_guest_tools.iso" vmdisk_size: 91115520 vmdisk_uuid: "5c199427-4978-4983-a889-ee5d8d028415" } disk_list { addr { bus: "scsi" index: 0 } container_id: 289271 container_uuid: "dfda6b0f-5a5a-404b-a3dd-b4ff588fbdfd" vmdisk_size: 64424509440 vmdisk_uuid: "cb97b701-5c23-495e-9417-b39530dfe2c3" } max_hotplug_memory_mb: 262144 memory_mb: 3072 name: "Windows Server 2016" nic_list { mac_addr: "52:54:00:0f:07:19" network_name: "AHV Network" network_uuid: "409aa584-f180-4937-89e2-b56d68c89865" } num_cores_per_vcpu: 1 num_vcpus: 2 } logical_timestamp: 12 state: "kOff" uuid: "89b1e252-2b06-4ad0-b59b-a4339cd62784" }
この中の仮想ディスクにあたり箇所の「vmdisk_uuid」を選択します。
上位にある「vmdisk_uuid: "5c199427-4978-4983-a889-ee5d8d028415"」は、「cdrom:True」と記載がありますので、こちらではなく「vmdisk_uuid: "cb97b701-5c23-495e-9417-b39530dfe2c3"」になります。間違えないように注意が必要です。
あとは、この仮想ディスクのUUIDを元にイメージサービスに登録をするだけです。
acli image.create "イメージ名" clone_from_vmdisk=ゴールドイメージの仮想ディスクUUID image_type=kDiskImage
今回は、イメージ名を「Windows Server 2016 Template」とし、上記の仮想マシン情報から取得した仮想ディスクを元に作成したいと思いますので、以下のコマンドとなります。
acli image.create "Windows Server 2016 Template" clone_from_vmdisk=cb97b701-5c23-495e-9417-b39530dfe2c3 image_type=kDiskImage
おそらく、登録はほぼ一瞬で終わると思います。
これで、Image Serviceを見てみると登録されていることがわかります。
では、テンプレートから仮想マシンを作成する際の手法も簡単に押さえておきましょう。
まずは、普通の仮想マシンを作成し、Diskを追加します。
仮想ディスクを追加する際に、Operationを「CLONE FORM IMAGE SERVICE」を選択すると、先ほど作成したテンプレートが出てきますので、これを選択し、必要な容量を設定した上でディスクをAddしてください。
これで、後は普通通りに仮想マシンを作成すれば終わりです。
ちょっと一手間ありますが、そんなに難しい手法ではありません。
今後新しいバージョンでおそらくGUIからの操作ができるようになる気がしますが、それまでの間は、この手法でゴールドイメージの管理が可能です。