Condividi tramite


Creare una macchina virtuale in VMware vCenter usando Azure Arc

Questo articolo descrive come effettuare il provisioning di una macchina virtuale usando le risorse di vCenter dal portale di Azure.

Creare una macchina virtuale nel portale di Azure

Dopo che l'amministratore ha connesso un VMware vCenter ad Azure, ha rappresentato le risorse VMware vCenter in Azure e ha fornito le autorizzazioni per tali risorse, verrà creata una macchina virtuale.

Prerequisiti

  • Una sottoscrizione di Azure e un gruppo di risorse in cui si ha il ruolo di collaboratore per le macchina virtuale Arc di VMware.
  • Un pool di risorse, un cluster o un host per cui si dispone del ruolo utente risorsa cloud privato Arc.
  • Una risorsa modello di macchina virtuale per cui si ha il ruolo utente risorsa del cloud privato Arc.
  • Una risorsa rete virtuale per cui si ha il ruolo Private Cloud Resource User per Arc.

Seguire questa procedura per creare una macchina virtuale nel portale di Azure:

  1. Nel browser passare al portale di Azure. Passare alla vista di navigazione delle macchine virtuali. Verrà visualizzata un'esperienza di esplorazione unificata per le macchine virtuali di Azure e Arc.

    Screenshot che mostra l'esperienza di esplorazione unificata per le macchine virtuali di Azure e Arc.

  2. Selezionare Aggiungi e quindi selezionare del computer Azure Arc nell'elenco a discesa.

    Screenshot che mostra la scheda Generale per la creazione di una macchina virtuale di Azure Arc.

  3. Selezionare la sottoscrizione e il gruppo di risorse in cui si vuole distribuire la macchina virtuale.

  4. Specificare il nome della macchina virtuale e quindi selezionare un percorso personalizzato condiviso dall'amministratore.

    Se sono supportati più tipi di macchine virtuali, selezionare VMware dall'elenco a discesa tipo di macchine virtuali.

  5. Selezionare il pool di risorse/cluster/host in cui distribuire la macchina virtuale.

  6. Selezionare l’archivio dati da usare per l'archiviazione.

  7. Selezionare il Modello in base al quale verrà creata la macchina virtuale.

    Suggerimento

    È possibile eseguire l'override delle impostazioni predefinite del modello per core CPU e la memoria.

    Se è stato selezionato un modello di Windows, specificare un Nome utente e una Password per l'account Administrator.

  8. (Facoltativo) Modificare i dischi configurati nel modello. Ad esempio, è possibile aggiungere altri dischi o aggiornare i dischi esistenti. Tutti i dischi e la macchina virtuale saranno presenti nell'archivio dati selezionato nel passaggio 6.

  9. (Facoltativo) Modificare le interfacce di rete configurate nel modello. Ad esempio, è possibile aggiungere schede di interfaccia di rete (NIC) o aggiornare le schede di interfaccia di rete esistenti. È anche possibile modificare la rete a cui verrà collegata questa scheda di interfaccia di rete, purché si disponga delle autorizzazioni appropriate per la risorsa di rete.

  10. (Facoltativo) Aggiungere tag alla risorsa macchina virtuale, se necessario.

  11. Selezionare Creare dopo aver esaminato tutte le proprietà. La creazione della macchina virtuale dovrebbe richiedere alcuni minuti.

Questo articolo descrive come effettuare il provisioning di una macchina virtuale usando le risorse di vCenter con un modello Bicep.

Creare una macchina virtuale VMware Arc usando il modello Bicep

Il modello Bicep seguente può essere usato per creare una macchina virtuale VMware Arc. L'elenco dei modelli di Azure Resource Manager (ARM), Bicep e Terraform disponibili per le risorse VMware abilitate per Arc è disponibile qui. Per attivare qualsiasi altra operazione di Arc, convertire il modello di ARM nel modello Bicep corrispondente.

// Parameters
param vmName string = 'contoso-vm'
param vmAdminPassword string = 'examplepassword!#'
param vCenterId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters/contoso-vcenter'
param templateId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachineTemplates/contoso-template-win22'
param resourcePoolId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/ResourcePools/contoso-respool'
param datastoreId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/Datastores/contoso-datastore'
param networkId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/contoso-network'
param extendedLocation object = {
  type: 'customLocation'
  name: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso-rg/providers/Microsoft.ExtendedLocation/customLocations/contoso-customlocation'
}
param ipSettings object = {
  allocationMethod: 'static'
  gateway: ['172.24.XXX.1']
  ipAddress: '172.24.XXX.105'
  subnetMask: '255.255.255.0'
  dnsServers: ['172.24.XXX.9']
}

resource contosoMachine 'Microsoft.HybridCompute/machines@2023-10-03-preview' = {
  name: vmName
  location:'westeurope'
  kind:'VMware'
  properties:{}
  tags: {
    foo: 'bar'
  }
}

resource vm 'Microsoft.ConnectedVMwarevSphere/virtualMachineInstances@2023-12-01' = {
  name: 'default'
  scope: contosoMachine
  extendedLocation: extendedLocation
  properties: {
    hardwareProfile: {
      memorySizeMB: 4096
      numCPUs: 2
    }
    osProfile: {
      computerName: vmName
      adminPassword: vmAdminPassword
    }
    placementProfile: {
      resourcePoolId: resourcePoolId
      datastoreId: datastoreId
    }
    infrastructureProfile: {
      templateId: templateId
      vCenterId: vCenterId
    }
    networkProfile: {
      networkInterfaces: [
        {
          nicType: 'vmxnet3'
          ipSettings: ipSettings
          networkId: networkId
          name: 'VLAN103NIC'
          powerOnBoot: 'enabled'
        }
      ]
    }
  }
}

// Outputs
output vmId string = vm.id

Questo articolo descrive come effettuare il provisioning di una macchina virtuale usando le risorse di vCenter con un modello Terraform.

Creare una macchina virtuale VMware Arc con Terraform

Prerequisiti

  • Sottoscrizione di Azure: assicurarsi di avere una sottoscrizione di Azure attiva.
  • Terraform: installare Terraform nel computer.
  • Interfaccia della riga di comando di Azure: installare l'interfaccia della riga di comando di Azure per autenticare e gestire le risorse.

Seguire questa procedura per creare una macchina virtuale VMware Arc usando Terraform. In questo articolo vengono illustrati i due scenari seguenti:

  1. Per le macchine virtuali individuate nell'inventario di vCenter, eseguire l'abilitazione nell'operazione di Azure e installare gli agenti Arc.
  2. Creare una nuova macchina virtuale VMware Arc usando modelli, pool di risorse, archivio dati e installare gli agenti Arc.

Scenario 1

Per le macchine virtuali individuate nell'inventario di vCenter, eseguire l'abilitazione nell'operazione di Azure e installare gli agenti Arc.

Passaggio 1: Definire le variabili in un file variables.tf

Creare un file denominato variables.tf e definire tutte le variabili necessarie.

variable "subscription_id" {
  description = "The subscription ID for the Azure account."
  type        = string
}

variable "resource_group_name" {
  description = "The name of the resource group."
  type        = string
}

variable "location" {
  description = "The location/region where the resources will be created."
  type        = string
}

variable "machine_name" {
  description = "The name of the machine."
  type        = string
}

variable "inventory_item_id" {
  description = "The ID of the Inventory Item for the VM."
  type        = string
}

variable "custom_location_id" {
  description = "The ID of the custom location."
  type        = string
}

variable "vm_username" {
  description = "The admin username for the VM."
  type        = string
}

variable "vm_password" {
  description = "The admin password for the VM."
  type        = string
}

variable "resource_group_name" {
  description = "The name of the resource group."
  type        = string
}

variable "location" {
  description = "The location/region where the resources will be created."
  type        = string
}

variable "machine_name" {
  description = "The name of the machine."
  type        = string
}

variable "vm_username" {
  description = "The admin username for the VM."
  type        = string
}

variable "vm_password" {
  description = "The admin password for the VM."
  type        = string
}

variable "inventory_id" {
  description = "The Inventory ID for the VM."
  type        = string
}

variable "vcenter_id" {
  description = "The ID of the vCenter."
  type        = string
}

variable "custom_location_id" {
  description = "The ID of the custom location."
  type        = string
}

Passaggio 2: Creare un file tfvars

Creare un file denominato CreateVMwareVM.tfvars e fornire valori di esempio per le variabili.

subscription_id      = "your-subscription-id"
resource_group_name  = "your-resource-group"
location             = "eastus"
machine_name         = "test_machine0001"
inventory_item_id    = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ConnectedVMwarevSphere/VCenters/your-vcenter-id/InventoryItems/your-inventory-item-id"
custom_location_id   = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ExtendedLocation/customLocations/your-custom-location-id"
vm_username          = "Administrator"
vm_password          = " The admin password for the VM "

Passaggio 3: Modificare la configurazione per usare le variabili

Creare un file denominato main.tf e inserire il codice seguente.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.0"
    }
    azapi = {
      source  = "azure/azapi"
      version = ">= 1.0.0"
    }
  }
}

# Configure the AzureRM provider with the subscription ID
provider "azurerm" {
  features {}
  subscription_id = var.subscription_id
}

# Configure the AzAPI provider with the subscription ID
provider "azapi" {
  subscription_id = var.subscription_id
}

# Retrieve the resource group details
data "azurerm_resource_group" "example" {
  name = var.resource_group_name
}

# Create a VMware machine resource in Azure
resource "azapi_resource" "test_machine0001" {
  schema_validation_enabled = false
  parent_id = data.azurerm_resource_group.example.id
  type = "Microsoft.HybridCompute/machines@2023-06-20-preview"
  name = var.machine_name
  location = data.azurerm_resource_group.example.location
  body = jsonencode({
      kind = "VMware"
      identity = {
        type = "SystemAssigned"
      }
  })
}

# Create a Virtual Machine instance using the VMware machine and Inventory Item ID
resource "azapi_resource" "test_inventory_vm0001" {
  schema_validation_enabled = false
  type = "Microsoft.ConnectedVMwarevSphere/VirtualMachineInstances@2023-10-01"
  name = "default"
  parent_id = azapi_resource.test_machine0001.id
  body = jsonencode({
      properties = {
          infrastructureProfile = {
            inventoryItemId = var.inventory_item_id
          }
      }
      extendedLocation = {
        type = "CustomLocation"
        name = var.custom_location_id
      }
  })
  depends_on = [azapi_resource.test_machine0001]
}

# Install Arc agent on the VM
resource "azapi_resource" "guestAgent" {
  type      = "Microsoft.ConnectedVMwarevSphere/virtualMachineInstances/guestAgents@2023-10-01"
  parent_id = azapi_resource.test_inventory_vm0001.id
  name      = "default"
  body = jsonencode({
    properties = {
      credentials = {
        username = var.vm_username
        password = var.vm_password
      }
      provisioningAction = "install"
    }
  })
  schema_validation_enabled = false
  ignore_missing_property   = false
  depends_on = [azapi_resource.test_inventory_vm0001]
}

Passaggio 4: Eseguire i comandi di Terraform

Usare il flag -var-file per passare il file .tfvars durante i comandi di Terraform.

  1. Inizializzare Terraform (se non è già inizializzato): terraform init
  2. Convalidare la configurazione: terraform validate -var-file="CreateVMwareVM.tfvars"
  3. Pianificare le modifiche: terraform plan -var-file="CreateVMwareVM.tfvars"
  4. Applicare le modifiche: terraform apply -var-file="CreateVMwareVM.tfvars"

Confermare la richiesta immettendo yes per applicare le modifiche.

Procedure consigliate

  • Usare il controllo della versione: mantenere i file di configurazione di Terraform sotto il controllo della versione (ad esempio Git) per tenere traccia delle modifiche nel tempo.
  • Esaminare attentamente i piani: esaminare sempre l'output del piano di Terraform prima di applicare le modifiche per assicurarsi di comprendere quali modifiche verranno apportate.
  • Gestione dello stato: eseguire regolarmente il backup dei file di stato di Terraform per evitare la perdita di dati.

Seguendo questa procedura, è possibile creare e gestire in modo efficace macchine virtuali HCRP e VMware Arc in Azure usando Terraform e installare gli agenti guest nelle macchine virtuali create.

Scenario 2

Creare una nuova macchina virtuale VMware Arc usando modelli, pool di risorse, archivio dati e installare gli agenti Arc.

Passaggio 1: Definire le variabili in un file variables.tf

Creare un file denominato variables.tf e definire tutte le variabili necessarie.

variable "subscription_id" {
  description = "The subscription ID for the Azure account."
  type        = string
}

variable "resource_group_name" {
  description = "The name of the resource group."
  type        = string
}

variable "location" {
  description = "The location/region where the resources will be created."
  type        = string
}

variable "machine_name" {
  description = "The name of the machine."
  type        = string
}

variable "vm_username" {
  description = "The admin username for the VM."
  type        = string
}

variable "vm_password" {
  description = "The admin password for the VM."
  type        = string
}

variable "template_id" {
  description = "The ID of the VM template."
  type        = string
}

variable "vcenter_id" {
  description = "The ID of the vCenter."
  type        = string
}

variable "resource_pool_id" {
  description = "The ID of the resource pool."
  type        = string
}

variable "datastore_id" {
  description = "The ID of the datastore."
  type        = string
}

variable "custom_location_id" {
  description = "The ID of the custom location."
  type        = string
}

Passaggio 2: Creare un file tfvars

Creare un file denominato CreateVMwareVM.tfvars e fornire valori di esempio per le variabili.

subscription_id      = "your-subscription-id"
resource_group_name  = "your-resource-group"
location             = "eastus"
machine_name         = "test_machine0002"
vm_username          = "Administrator"
vm_password          = "*********"
template_id          = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ConnectedVMwarevSphere/virtualmachinetemplates/your-template-id"
vcenter_id           = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ConnectedVMwarevSphere/VCenters/your-vcenter-id"
resource_pool_id     = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ConnectedVMwarevSphere/resourcepools/your-resource-pool-id"
datastore_id         = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ConnectedVMwarevSphere/datastores/your-datastore-id"
custom_location_id   = "/subscriptions/your-subscription-id/resourceGroups/your-resource-group/providers/Microsoft.ExtendedLocation/customLocations/your-custom-location-id"

Passaggio 3: Modificare la configurazione per usare le variabili

Creare un file denominato main.tf e inserire il codice seguente.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.0"
    }
    azapi = {
      source  = "azure/azapi"
      version = ">= 1.0.0"
    }
  }
}

# Configure the AzureRM provider with the subscription ID
provider "azurerm" {
  features {}
  subscription_id = var.subscription_id
}

# Configure the AzAPI provider with the subscription ID
provider "azapi" {
  subscription_id = var.subscription_id
}

# Retrieve the resource group details
data "azurerm_resource_group" "example" {
  name = var.resource_group_name
}

# Create a VMware machine resource in Azure
resource "azapi_resource" "test_machine0002" {
  schema_validation_enabled = false
  parent_id = data.azurerm_resource_group.example.id
  type = "Microsoft.HybridCompute/machines@2023-06-20-preview"
  name = var.machine_name
  location = data.azurerm_resource_group.example.location
  body = jsonencode({
      kind = "VMware"
      identity = {
        type = "SystemAssigned"
      }
  })
}

# Create a Virtual Machine instance using the VMware machine created above
resource "azapi_resource" "test_vm0002" {
  schema_validation_enabled = false
  type = "Microsoft.ConnectedVMwarevSphere/VirtualMachineInstances@2023-10-01"
  name = "default"
  parent_id = azapi_resource.test_machine0002.id
  body = jsonencode({
      properties = {
          infrastructureProfile = {
            templateId = var.template_id
            vCenterId = var.vcenter_id
          }

          placementProfile = {
            resourcePoolId = var.resource_pool_id
            datastoreId = var.datastore_id
          }

          osProfile = {
            adminPassword = var.vm_password
          }
      }
      extendedLocation = {
        type = "CustomLocation"
        name = var.custom_location_id
      }
  })
  depends_on = [azapi_resource.test_machine0002]
}

# Create a guest agent for the VM instance
resource "azapi_resource" "guestAgent" {
  type      = "Microsoft.ConnectedVMwarevSphere/virtualMachineInstances/guestAgents@2023-10-01"
  parent_id = azapi_resource.test_vm0002.id
  name      = "default"
  body = jsonencode({
    properties = {
      credentials = {
        username = var.vm_username
        password = var.vm_password
      }
      provisioningAction = "install"
    }
  })
  schema_validation_enabled = false
  ignore_missing_property   = false
  depends_on = [azapi_resource.test_vm0002]
}

Passaggio 4: Eseguire i comandi di Terraform

Usare il flag -var-file per passare il file .tfvars durante i comandi di Terraform.

  1. Inizializzare Terraform (se non è già inizializzato): terraform init
  2. Convalidare la configurazione: terraform validate -var-file="CreateVMwareVM.tfvars"
  3. Pianificare le modifiche: terraform plan -var-file="CreateVMwareVM.tfvars"
  4. Applicare le modifiche: terraform apply -var-file="CreateVMwareVM.tfvars"

Confermare la richiesta immettendo yes per applicare le modifiche.

Procedure consigliate

  • Usare il controllo della versione: mantenere i file di configurazione di Terraform sotto il controllo della versione (ad esempio Git) per tenere traccia delle modifiche nel tempo.
  • Esaminare attentamente i piani: esaminare sempre l'output del piano di Terraform prima di applicare le modifiche per assicurarsi di comprendere quali modifiche verranno apportate.
  • Gestione dello stato: eseguire regolarmente il backup dei file di stato di Terraform per evitare la perdita di dati.

Passaggi successivi

Eseguire operazioni sulle macchine virtuali VMware in Azure.