2016年12月13日火曜日

AHVで、既存の仮想マシンをテンプレートとして利用する方法

vSphereには、作成した仮想マシンをテンプレートとして保存し、都度その点プレートを元に仮想マシンを簡単にコピー・カスタマイズして展開をする機能を持っています。
この機能は、都度仮想マシンが必要になった際に、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からの操作ができるようになる気がしますが、それまでの間は、この手法でゴールドイメージの管理が可能です。





0 件のコメント:

コメントを投稿