Compartir por


Creación de una máquina virtual en VMware vCenter mediante Azure Arc

En este artículo se describe cómo aprovisionar una máquina virtual mediante recursos de vCenter desde Azure Portal.

Crear una máquina virtual en Azure Portal

Una vez que el administrador haya conectado un VMware vCenter a Azure, representado los recursos de VMware vCenter en Azure y le haya proporcionado permisos para esos recursos, tendrá que crear una máquina virtual.

Requisitos previos

  • Una suscripción y un grupo de recursos de Azure en los que tenga rol de colaborador de Arc VMware VM.
  • Un grupo de recursos, clúster o host en el que tenga el rol de usuario de recursos de la nube privada de Arc.
  • Un recurso de plantilla de máquina virtual en el que tenga el rol de usuario de recursos de la nube privada de Arc.
  • Un recurso de red virtual en el que tenga el rol de usuario de recursos de la nube privada de Arc.

Siga estos pasos para crear una máquina virtual en Azure Portal:

  1. En el explorador, vaya a Azure Portal. Vaya a la vista de exploración de máquinas virtuales. Verá una experiencia de exploración unificada para máquinas virtuales de Azure y Arc.

    Captura de pantalla en la que se muestra la experiencia de exploración unificada para máquinas virtuales de Azure y Arc.

  2. Seleccione Agregar y, a continuación, seleccione Máquina de Azure Arc en el menú desplegable.

    Captura de pantalla en la que se muestra la pestaña Básico para crear una máquina virtual de Azure Arc.

  3. Seleccione la suscripción y el grupo de recursos donde desea implementar la máquina virtual.

  4. Indique el nombre de la máquina virtual y, a continuación, seleccione una ubicación personalizada que el administrador haya compartido con usted.

    Si se admiten varios tipos de máquinas virtuales, seleccione VMware en la lista desplegable Virtual machine kind (Tipo de máquina virtual).

  5. Seleccione el grupo de recursos, clúster o host en el que se debe implementar la máquina virtual.

  6. Seleccione el almacén de datos que desea usar para el almacenamiento.

  7. Seleccione la Plantilla en función de la cual creará la máquina virtual.

    Sugerencia

    Puede invalidar los valores predeterminados de plantilla para los núcleos de CPU y la memoria.

    Si ha seleccionado una imagen de Windows, escriba un nombre de usuario y una contraseña para la cuenta de administrador.

  8. (Opcional) Cambie los discos configurados en la plantilla. Por ejemplo, puede agregar más discos o actualizar los existentes. Todos los discos y VM estarán en el almacén de datos seleccionado en el paso 6.

  9. (Opcional) Cambie las interfaces de red configuradas en la plantilla. Por ejemplo, puede agregar tarjetas de interfaz de red (NIC) o actualizar NIC ya existentes. También puede cambiar la red a la que se adjuntará esta NIC, siempre que tenga los permisos adecuados para el recurso de red.

  10. (Opcional) Agregue etiquetas al recurso de VM si es necesario.

  11. Seleccione Crear después de revisar todas las propiedades. La creación de la máquina virtual puede tardar unos minutos.

En este artículo se describe cómo aprovisionar una máquina virtual mediante recursos de vCenter mediante una plantilla de Bicep.

Creación de una máquina de Arc VMware mediante una plantilla de Bicep

La siguiente plantilla de bicep se puede usar para crear una máquina de Arc VMware. Aquí es la lista de plantillas de Azure Resource Manager (ARM), Bicep y Terraform disponibles para recursos de VMware habilitados para Arc. Para desencadenar cualquier otra operación de Arc, convierta la plantilla de ARM de Correspondiente en plantilla de Bicep.

// Parameters
param vmName string = 'contoso-vm'
param vmAdminPassword string = 'examplepassword!#'
param vCenterId string = '/subscriptions/01234567-0123-0123-0123-0123456789ab/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/vcenters/contoso-vcenter'
param templateId string = '/subscriptions/01234567-0123-0123-0123-0123456789ab/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualMachineTemplates/contoso-template-win22'
param resourcePoolId string = '/subscriptions/01234567-0123-0123-0123-0123456789ab/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/ResourcePools/contoso-respool'
param datastoreId string = '/subscriptions/01234567-0123-0123-0123-0123456789ab/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/Datastores/contoso-datastore'
param networkId string = '/subscriptions/01234567-0123-0123-0123-0123456789ab/resourceGroups/contoso-rg/providers/Microsoft.ConnectedVMwarevSphere/VirtualNetworks/contoso-network'
param extendedLocation object = {
  type: 'customLocation'
  name: '/subscriptions/01234567-0123-0123-0123-0123456789ab/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

En este artículo se describe cómo aprovisionar una máquina virtual mediante recursos de vCenter mediante una plantilla de Terraform.

Creación de una máquina de Arc VMware con Terraform

Requisitos previos

  • Suscripción de Azure: asegúrese de que tiene una suscripción activa de Azure.
  • Terraform: instale Terraform en la máquina.
  • Cli de Azure: instale la CLI de Azure para autenticar y administrar recursos.

Siga estos pasos para crear una máquina de Arc VMware mediante Terraform. En este artículo se tratan los dos escenarios siguientes:

  1. En el caso de las máquinas virtuales detectadas en el inventario de vCenter, realice la habilitación en la operación de Azure e instale agentes de Arc.
  2. Cree una nueva máquina virtual de Arc VMware mediante plantillas, grupo de recursos, almacén de datos e instalación de agentes de Arc.

Escenario 1

En el caso de las máquinas virtuales detectadas en el inventario de vCenter, realice la habilitación en la operación de Azure e instale agentes de Arc.

Paso 1: Definir variables en un archivo de variables.tf

Cree un archivo denominado variables.tf y defina todas las variables necesarias.

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
}

Paso 2: Crear un archivo tfvars

Cree un archivo denominado CreateVMwareVM.tfvars y proporcione valores de ejemplo para las variables.

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 "

Paso 3: Modificar la configuración para usar variables

Cree un archivo denominado main.tf e inserte el código siguiente.

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]
}

Paso 4: Ejecución de comandos de Terraform

Use la marca -var-file para pasar el archivo .tfvars durante los comandos de Terraform.

  1. Inicializar Terraform (si aún no se ha inicializado): terraform init
  2. Validar la configuración: terraform validate -var-file="CreateVMwareVM.tfvars"
  3. Planear los cambios: terraform plan -var-file="CreateVMwareVM.tfvars"
  4. Aplicar los cambios: terraform apply -var-file="CreateVMwareVM.tfvars"

Para confirmar el mensaje, escriba sí para aplicar los cambios.

procedimientos recomendados

  • Usar el control de versiones: mantenga los archivos de configuración de Terraform bajo control de versiones (por ejemplo, Git) para realizar un seguimiento de los cambios a lo largo del tiempo.
  • Revisar los planes cuidadosamente: revise siempre la salida del plan de terraform antes de aplicar los cambios para asegurarse de que comprende qué cambios se realizarán.
  • Administración de estados: realice copias de seguridad periódicas de los archivos de estado de Terraform para evitar la pérdida de datos.

Siguiendo estos pasos, puede crear y administrar máquinas virtuales de HCRP y Arc VMware en Azure mediante Terraform e instalar agentes invitados en las máquinas virtuales creadas.

Escenario 2

Cree una nueva máquina virtual de Arc VMware mediante plantillas, grupo de recursos, almacén de datos e instalación de agentes de Arc.

Paso 1: Definir variables en un archivo de variables.tf

Cree un archivo denominado variables.tf y defina todas las variables necesarias.

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
}

Paso 2: Creación de un archivo tfvars

Cree un archivo denominado CreateVMwareVM.tfvars y proporcione valores de ejemplo para las variables.

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"

Paso 3: Modificar la configuración para usar variables

Cree un archivo denominado main.tf e inserte el código siguiente.

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]
}

Paso 4: Ejecución de comandos de Terraform

Use la marca -var-file para pasar el archivo .tfvars durante los comandos de Terraform.

  1. Inicializar Terraform (si aún no se ha inicializado): terraform init
  2. Validar la configuración: terraform validate -var-file="CreateVMwareVM.tfvars"
  3. Planear los cambios: terraform plan -var-file="CreateVMwareVM.tfvars"
  4. Aplicar los cambios: terraform apply -var-file="CreateVMwareVM.tfvars"

Para confirmar el mensaje, escriba sí para aplicar los cambios.

procedimientos recomendados

  • Usar el control de versiones: mantenga los archivos de configuración de Terraform bajo control de versiones (por ejemplo, Git) para realizar un seguimiento de los cambios a lo largo del tiempo.
  • Revisar los planes cuidadosamente: revise siempre la salida del plan de terraform antes de aplicar los cambios para asegurarse de que comprende qué cambios se realizarán.
  • Administración de estados: realice copias de seguridad periódicas de los archivos de estado de Terraform para evitar la pérdida de datos.

Pasos siguientes

Ejecución de operaciones en máquinas virtuales de VMware en Azure.