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:
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.
Seleccione Agregar y, a continuación, seleccione Máquina de Azure Arc en el menú desplegable.
Seleccione la suscripción y el grupo de recursos donde desea implementar la máquina virtual.
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).
Seleccione el grupo de recursos, clúster o host en el que se debe implementar la máquina virtual.
Seleccione el almacén de datos que desea usar para el almacenamiento.
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.
(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.
(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.
(Opcional) Agregue etiquetas al recurso de VM si es necesario.
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/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
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:
- 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.
- 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.
- Inicializar Terraform (si aún no se ha inicializado):
terraform init
- Validar la configuración:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Planear los cambios:
terraform plan -var-file="CreateVMwareVM.tfvars"
- 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.
- Inicializar Terraform (si aún no se ha inicializado):
terraform init
- Validar la configuración:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Planear los cambios:
terraform plan -var-file="CreateVMwareVM.tfvars"
- 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.