NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CE に acli で VM を作成してみる。

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」でコンソールを開くと・・・

f:id:gowatana:20200319195642p:plain

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

f:id:gowatana:20200319195744p:plain

以上。

©2019 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。