Nutanix CE での VM 作成は、一般的には Web UI(Prism)から実施します。この投稿では、あえて CLI でやってみます。Nutanix CE 2019.11.22 を使用しています。
クラスタ設定は ncli で実施ずみで、acli を使用して、ISO ファイルの登録、ネットワークの作成、VM の作成などを実施します。
前回(クラスタの設定)はこちら。
acli は、ncli と同様で、CVM に SSH ログインしてコマンド実行します。
acli の起動
acli コマンドを実行すると、対話モードで起動でき、プロンプトが <acropolis> になります。子の利用方法であれば、TAB キーによるコマンド補完ができるので、オプションや捜査対象(VM 名など)を探しながら acli を利用できます。
ここでは、acli を起動して、host.list サブコマンドでクラスタ内の AHV の一覧(シングル ノード クラスタなので 1台だけ)を表示しています。
nutanix@NTNX-f2bcd887-A-CVM:192.168.20.42:~$ acli <acropolis> <acropolis> host.list Hypervisor IP Hypervisor DNS Name Host UUID Compute Only Schedulable Hypervisor Type Hypervisor Name 192.168.20.41 2f3905fb-6b31-41f6-ae60-91b2ef657d49 False True kKvm AHV
ncli と同様に、「acli ~」とサブコマンドを続けて実行することもできます。こちらの方法は、シェルスクリプトなどで利用しやすいと思います。
nutanix@NTNX-f2bcd887-A-CVM:192.168.20.42:~$ acli host.list Hypervisor IP Hypervisor DNS Name Host UUID Compute Only Schedulable Hypervisor Type Hypervisor Name 192.168.20.41 2f3905fb-6b31-41f6-ae60-91b2ef657d49 False True kKvm AHV
今回は、後者の「acli ~」といった実行方法で利用します。
また、これ以降のコマンド実行例では、Shell のプロンプト文字列が長いので CVM$ にしています。
nutanix@NTNX-f2bcd887-A-CVM:192.168.20.42:~$ PS1='CVM$ ' CVM$
ネットワークの作成
acli net.create コマンドで、AHV に、VM を接続するネットワークを作成します。今回は VLAN ID なし(AHV の場合は VLAN ID 0)のネットワークを、「nw-vlan-0」という名前で作成しています。ここで指定する VLAN ID は、あらかじめ物理ネットワーク スイッチ側でも設定しておく必要があります。CVM のうち 1台で実行すると、クラスタ内にあるすべての AHV に「nw-vlan-0」ネットワークが作成されます。
CVM$ acli net.create nw-vlan-0 vlan=0
CVM$ acli net.list
Network name Network UUID Type Identifier Subnet
nw-vlan-0 58523242-065c-4842-b300-e475385a2a36 kBridged 0
CVM$ acli net.get nw-vlan-0
nw-vlan-0 {
identifier: 0
logical_timestamp: 1
name: "nw-vlan-0"
type: "kBridged"
uuid: "58523242-065c-4842-b300-e475385a2a36"
}
ISO イメージ ファイルの登録
Nutanix CE のイメージ サービスに、OS インストーラの ISO ファイルを登録します。ここで登録した ISO イメージは、あとで VM に vDisk として追加します。
今回登録する ISO イメージ ファイルは CentOS 7 のインストーラで、下記のサイトから直接ダウンロードします。
http://ftp.iij.ad.jp/pub/linux/centos/7.7.1908/isos/x86_64/
ISO イメージ ファイルは、acli image.create で登録します。ここでは、.iso ファイルのダウンロード元 URL のほかに、次のようなパラメータを指定しています。
- イメージ名: CentOS-7-x86_64-Minimal-1908
- イメージの種類: ISO イメージ(kIsoImage)
- イメージを格納するストレージ コンテナ: default-container-33013026607952
作成ずみの ストレージ コンテナ名は、対話モードの acli で 「~ container=」まで入力して TAB 補完するか、ncli storage-container list コマンドなどで確認できます。
CVM$ acli image.create CentOS-7-x86_64-Minimal-1908 source_url=http://ftp.iij.ad.jp/pub/linux/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso image_type=kIsoImage container=default-container-33013026607952 CentOS-7-x86_64-Minimal-1908: pending CentOS-7-x86_64-Minimal-1908: complete
ISO イメージが登録されました。
CVM$ acli image.list Image name Image type Image UUID CentOS-7-x86_64-Minimal-1908 kIsoImage f2464b4a-5ef7-4f6c-a324-ae6271e90249
ちなみに、デフォルトで作成されるストレージ コンテナ(default-container-~)は、クラスタを作成するたびにコンテナ名末尾の数字列が変わります。スクリプトなどでストレージ コンテナ作成をする場合は、ncli storage-container list コマンドで、あらかじめ default-container- を名前に含むストレージ コンテナ名を取得しておくような工夫が必要です。
たとえば、ストレージ コンテナ名を変数(CTR)に格納して・・・
CVM$ CTR=$(ncli storage-container list | grep ' Name' | grep default-container- | awk '{print $3}')
CVM$ echo $CTR
default-container-9359715982189
ncli の他のコマンドラインでは、この変数を指定します。
CVM$ acli image.create CentOS-7-x86_64-Minimal-1908 source_url=http://ftp.iij.ad.jp/pub/linux/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso image_type=kIsoImage container=$CTR
VM の作成
VM の作成と、設定変更
VM 「vm01」を作成します。
CVM$ acli vm.create vm01
vm01: pending
vm01: complete
CVM$ acli vm.list
VM name VM UUID
vm01 23addbee-fd32-456f-82e7-c160917ff02d
CVM$ acli vm.get vm01
vm01 {
config {
allow_live_migrate: True
machine_type: "pc"
memory_mb: 2048
name: "vm01"
num_threads_per_core: 1
num_vcpus: 1
num_vnuma_nodes: 0
vga_console: True
vm_type: "kGuestVM"
}
logical_timestamp: 1
state: "kOff"
uuid: "23addbee-fd32-456f-82e7-c160917ff02d"
}
VM の設定変更は、vm.update です。ためしに、メモリ容量を変更してみます。
CVM$ acli vm.update vm01 memory=1024M
vm01: pending
vm01: complete
CVM$ acli vm.get vm01
vm01 {
config {
allow_live_migrate: True
machine_type: "pc"
memory_mb: 1024
name: "vm01"
num_threads_per_core: 1
num_vcpus: 1
num_vnuma_nodes: 0
vga_console: True
vm_type: "kGuestVM"
}
logical_timestamp: 2
state: "kOff"
uuid: "23addbee-fd32-456f-82e7-c160917ff02d"
}
VM への vNIC 作成
acli vm.create で作成した VM には、デフォルトでは vNIC がないので、acli vm.nic_create で作成します。
vNIC には、あらかじめ作成しておいたネットワークを指定します。
CVM$ acli vm.nic_create vm01 network=nw-vlan-0 NicCreate: pending NicCreate: complete
vNIC が作成されました。
CVM$ acli vm.nic_list vm01 Mac Address IP Address Network UUID Network Name 50:6b:8d:c3:b4:61 58523242-065c-4842-b300-e475385a2a36 nw-vlan-0
VM への vDisk 作成
acli vm.create で作成した VM には、デフォルトでは vDisk もないので、acli vm.disk_create で作成します。
VM に vDisk を 2つ作成します。
- あらかじめイメージ サービスに登録しておいた ISO ファイルを、CDROM として作成します。
- これからゲスト OS をインストールする、空の vDisk を新規作成します。
VM に CD ドライブを作成して、ISO イメージを接続するには、clone_from_image でイメージ サービスに登録した ISO イメージを選択し、cdrom=true を指定します。
CVM$ acli vm.disk_create vm01 clone_from_image=CentOS-7-x86_64-Minimal-1908 cdrom=true DiskCreate: pending DiskCreate: complete
空の vDisk を策作成するには、ディスク容量(create_size)と、ストレージ コンテナを指定します。
CVM$ acli vm.disk_create vm01 create_size=16G container=default-container-33013026607952 DiskCreate: pending DiskCreate: complete
先ほどのイメージ登録での例のように、ストレージコンテナ名を変数(今回は CTR)に格納している場合は、下記のように指定します。
CVM$ acli vm.disk_create vm01 create_size=16G container=$CTR
IDE の CDROM ドライブと、SCSI の vDisk が作成されました。
CVM$ acli vm.disk_list vm01 Device bus Device index ide 0 scsi 0
設定変更した VM の情報確認
VM の情報を表示すると、作成時よりも vDisk や vNIC の情報が増えています。
CVM$ acli vm.get vm01
vm01 {
config {
allow_live_migrate: True
disk_list {
addr {
bus: "ide"
index: 0
}
cdrom: True
container_id: 4
container_uuid: "0cb6be2b-0900-4772-abb4-76cba1bafd03"
device_uuid: "baafca11-bf46-4c0f-8298-d79c7b98b9de"
naa_id: "naa.6506b8ddd2c693c883f38a2a1b1e16a3"
source_nfs_path: "/default-container-33013026607952/.file_repo/ca7558f9-335b-4fc6-9268-abd2f7740ca7"
vmdisk_size: 987758592
vmdisk_uuid: "1f73136b-48a6-46cd-8e73-d93fb3157d72"
}
disk_list {
addr {
bus: "scsi"
index: 0
}
container_id: 4
container_uuid: "0cb6be2b-0900-4772-abb4-76cba1bafd03"
device_uuid: "7e653350-e643-430c-9f6d-62b480598564"
naa_id: "naa.6506b8d007ec02b8e9f93e5a837c234b"
vmdisk_size: 17179869184
vmdisk_uuid: "fda7a8d7-38ad-4c10-8da6-30180856d080"
}
machine_type: "pc"
memory_mb: 1024
name: "vm01"
nic_list {
mac_addr: "50:6b:8d:c3:b4:61"
network_name: "nw-vlan-0"
network_type: "kNativeNetwork"
network_uuid: "58523242-065c-4842-b300-e475385a2a36"
type: "kNormalNic"
uuid: "e08e5e3d-18df-4c9b-89c7-8ef486beaa41"
}
num_threads_per_core: 1
num_vcpus: 1
num_vnuma_nodes: 0
vga_console: True
vm_type: "kGuestVM"
}
logical_timestamp: 5
state: "kOff"
uuid: "23addbee-fd32-456f-82e7-c160917ff02d"
}
VM の起動
VM を起動します。
CVM$ acli vm.on vm01 vm01: pending vm01: complete
Prism でも、VM が起動されたことがわかります。vm01 を選択して、「Launch Console」でコンソールを開くと・・・

OS のインストーラが起動してくるはずです。

以上。
