檢視次數:
Nutanix REST API (v3) 允許自動化 VM 部署,這對於腳本編寫、CI/CD 管道或大量 VM 佈建非常有用。欲了解詳細資訊,請參閱 Nutanix KB 6440 – 使用 Nutanix REST API v3 建立 VMNutanix API v3 – 使用 Cloud-Init 建立 Linux VM – Nutanix.dev
趨勢科技建議下列 VM 配置:
  • VM 名稱:Nutanix-rest-connector-vm
  • 虛擬中央處理器 (vCPUs): 4 (1 插槽 × 4 虛擬中央處理器)
  • 記憶體: 8 GB (8192 MB)
  • 磁碟: 從映像檔 Nutaminx-connector-image 複製
  • 磁碟匯流排:IDE
  • 網路: 子網路 New-VLAN265 (DHCP)
在開始之前,請確保所需的 VM 映像已上傳至 Nutanix 映像服務,並且目標網路子網路 (VLAN) 已經建立。

步驟

  1. 收集所需的 UUIDs
    REST API 需要使用影像和子網路的 UUID,而非名稱。
    1. 取得影像 UUID:
      curl -u "admin:<password>" -k \
        -H "Content-Type: application/json" \
        -X POST https://<cluster-ip>:9440/api/nutanix/v3/images/list \
        -d '{"kind":"image","filter":"name==Nutaminx-connector-image"}'
      
      • 目的:檢索影像 Nutaminx-connector-image 的 UUID。
      • 輸出: 包含 metadata.uuid 的 JSON,例如
        "metadata": {
            "uuid": "c63ef950-7ba5-4450-bb10-65fdf209c639",
            "name": "Nutaminx-connector-image"
        
      此 UUID 將用於附加開機磁碟
    2. 取得子網路 UUID。
      curl -u "admin:<password>" -k \
        -H "Content-Type: application/json" \
        -X POST https://<cluster-ip>:9440/api/nutanix/v3/subnets/list \
        -d '{"kind":"subnet","filter":"name==New-VLAN265"}'
      
      • 目的:檢索子網路New-VLAN265的UUID。
      • 輸出: 包含 metadata.uuid 的 JSON,例如
        "metadata": {
            "uuid": "06b5de80-6864-4871-b7b8-9e36849fb5a9",
            "name": "New-VLAN265"
        }
        
      此 UUID 用於將 NIC 附加到 VM。
  2. 使用映像 UUID 和子網路 UUID 建立虛擬機:
    curl -u "admin:<password>" -k -H "Content-Type: application/json" \
      -X POST https://<cluster-ip>:9440/api/nutanix/v3/vms \
      -d '{
        "spec": {
          "name": "Nutanix-rest-connector-vm",
          "resources": {
            "num_vcpus_per_socket": 4,
            "num_sockets": 1,
            "memory_size_mib": 8192,
            "disk_list": [
              {
                "device_properties": {
                  "disk_address": {
                    "device_index": 0,
                    "adapter_type": "IDE"
                  }
                },
                "data_source_reference": {
                  "kind": "image",
                  "uuid": "c63ef950-7ba5-4450-bb10-65fdf209c639"
                }
              }
            ],
            "nic_list": [
              {
                "subnet_reference": {
                  "kind": "subnet",
                  "uuid": "06b5de80-6864-4871-b7b8-9e36849fb5a9"
                }
              }
            ]
          }
        },
        "metadata": {
          "kind": "vm"
        }
      }'
    

    關鍵欄位的定義

    欄位
    說明
    名稱
    VM 名稱 (Nutanix-rest-connector-vm)
    num_vcpus_per_socket
    每個插槽中的虛擬CPU數量
    num_sockets
    CPU 插槽數目
    memory_size_mib
    記憶體以 MiB 為單位 (8192 = 8GB)
    disk_list.device_properties.disk_address.adapter_type
    磁碟的匯流排類型(IDE
    disk_list.data_source_reference.uuid
    要複製的映像的 UUID
    nic_list.subnet_reference.uuid
    VM網路介面卡的子網路UUID
    metadata.kind
    必須為 "vm" 以進行 VM 建立
  3. 在命令完成後驗證虛擬機的建立:
    • Prism UI:檢查 Nutanix-rest-connector-vm 的虛擬機頁面
    • ACLI:
    acli vm.get
                  Nutanix-rest-connector-vm
    • REST API:
    curl -u
                  "admin:<password>" -k \   -H "Content-Type:
                application/json" \ 
                https://<cluster-ip>:9440/api/nutanix/v3/vms/<VM-UUID>
  4. 開啟虛擬機的電源:
    curl -u "admin:<password>" -k \
      -H "Content-Type: application/json" \
      -X POST https://<cluster-ip>:9440/api/nutanix/v3/vms/<VM-UUID>/set_power_state \
      -d '{"transition":"ON"}'