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 のインストーラが起動してくるはずです。
以上。