Criar uma máquina virtual no VMware vCenter usando o Azure Arc
Este artigo descreve como provisionar uma VM usando recursos do vCenter do portal do Azure.
Criar uma VM no portal do Azure
Depois que o administrador conectou um VMware vCenter ao Azure, representou os recursos do VMware vCenter no Azure e forneceu a você permissões para esses recursos, você criará uma máquina virtual.
Pré-requisitos
- Uma assinatura do Azure e um grupo de recursos em que você tem uma função de contribuidor de VM do VMware do Arc.
- Um pool/cluster/host de recursos no qual você tem função de usuário de recurso de nuvem privada do Arc.
- Um recurso de modelo de máquina virtual no qual você tem função de usuário de recurso de nuvem privada do Arc.
- Um recurso de rede virtual no qual você tem função de usuário de recurso de nuvem privada do Arc.
Siga estas etapas para criar uma VM no portal do Azure:
No navegador, acesse o portal do Azure. Acesse o modo de navegação de máquinas virtuais. Você verá uma experiência de navegação unificada para máquinas virtuais do Azure e do Arc.
Selecione Adicionar e Computador do Azure Arc na lista suspensa.
Selecione a Assinatura e o Grupo de recursos em que você deseja implantar a VM.
Forneça o Nome da máquina virtual e selecione um Local personalizado que o administrador compartilhou com você.
Se houver suporte para vários tipos de VMs, selecione VMware na lista suspensa Tipo de máquina virtual.
Selecione o Pool de recursos/cluster/host no qual a VM deve ser implantada.
Selecione o armazenamento de dados que deseja usar para armazenar.
Selecione o Modelo com base no qual você criará a VM.
Dica
Você pode substituir os padrões de modelo para Núcleos de CPU e Memória.
Se você selecionou um modelo de Windows, forneça um Nome de usuário, Senha para a Conta de administrador.
(Opcional) Altere os discos configurados no modelo. Por exemplo, você pode adicionar ou atualizar discos. Todos os discos e a VM estarão no armazenamento de dados selecionado na etapa 6.
(Opcional) Altere as interfaces de rede configuradas no modelo. Por exemplo, você pode adicionar ou atualizar placas de NIC (adaptador de rede). Você também pode alterar a rede à qual essa NIC será anexada, desde que tenha as permissões apropriadas para o recurso de rede.
(Opcional) Adicione marcas ao recurso da VM, se necessário.
Selecione Criar depois de examinar todas as propriedades. A criação da VM pode levar alguns minutos.
Este artigo descreve como provisionar uma VM usando recursos de vCenter usando um modelo Bicep.
Criar um computador VMware Arc usando o modelo Bicep
O seguinte modelo Bicep pode ser usado para criar um computador VMware Arc. Aqui está a lista de modelos disponíveis do Azure Resource Manager (ARM), Bicep, e Terraform para recursos do VMware habilitados para Arc. Para disparar qualquer outra operação Arc, converta o correspondente modelo do ARM em modelo 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
Este artigo descreve como provisionar uma VM usando recursos do vCenter usando um modelo do Terraform.
Criar um computador VMware Arc com Terraform
Pré-requisitos
- Assinatura do Azure: Certifique-se de possui uma assinatura do Azure ativa.
- Terraform: Instale o Terraform em seu computador.
- CLI Azure: Instale o CLI Azure para autenticar e gerenciar recursos.
Siga estas etapas para criar um computador VMware Arc usando o Terraform. Os dois seguintes cenários estão cobertos neste artigo:
- Para VMs descobertas no inventário do vCenter, execute a operação de habilitação no Azure e instale os agentes do Arc.
- Crie uma VM VMware Arc usando modelos, pool de Recursos, armazenamento de dados e instale os agentes Arc.
Cenário 1
Para VMs descobertas no inventário do vCenter, execute a operação de habilitação no Azure e instale os agentes do Arc.
Etapa 1: Definir as variáveis em um arquivo variables.tf
Crie um arquivo chamado variables.tf e defina todas as variáveis necessárias.
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
}
Etapa 2: Criar um arquivo tfvars
Crie um arquivo chamado CreateVMwareVM.tfvars e forneça valores de amostra para as variáveis.
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 "
Etapa 3: Modificar a configuração para usar variáveis
Crie um arquivo chamado main.tf e insira o seguinte código.
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]
}
Etapa 4: Executar comandos do Terraform
Use o sinalizador -var-file para passar o arquivo .tfvars durante os comandos do Terraform.
- Inicialize o Terraform (se ainda não estiver inicializado):
terraform init
- Validar a configuração:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Planejar as alterações:
terraform plan -var-file="CreateVMwareVM.tfvars"
- Aplicar as alterações:
terraform apply -var-file="CreateVMwareVM.tfvars"
Confirme o prompt inserindo sim para aplicar as alterações.
Práticas recomendadas
- Usar o controle de versão: Mantenha seus arquivos de configuração do Terraform sob o controle de versão (por exemplo, Git) para acompanhar as alterações ao longo do tempo.
- Revisar os planos cuidadosamente: Sempre reveja a saída do plano do terraform antes de aplicar as alterações para garantir que você entenda quais alterações serão feitas.
- Gerenciamento de estado: Faça backup regularmente dos seus arquivos de estado do Terraform para evitar a perda de dados.
Seguindo esses etapas, você pode efetivamente criar e gerenciar VMs HCRP e VMware Arc no Azure usando Terraform e instalar agentes convidados nas VMs criadas.
Cenário 2
Crie uma VM VMware Arc usando modelos, pool de Recursos, armazenamento de dados e instale os agentes Arc.
Etapa 1: Definir as variáveis em um arquivo variables.tf
Crie um arquivo chamado variables.tf e defina todas as variáveis necessárias.
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
}
Etapa 2: Criar o arquivo tfvars
Crie um arquivo chamado CreateVMwareVM.tfvars e forneça valores de amostra para as variáveis.
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"
Etapa 3: Modificar a configuração para usar variáveis
Crie um arquivo chamado main.tf e insira o seguinte código.
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]
}
Etapa 4: Executar comandos do Terraform
Use o sinalizador -var-file para passar o arquivo .tfvars durante os comandos do Terraform.
- Inicialize o Terraform (se ainda não estiver inicializado):
terraform init
- Validar a configuração:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Planejar as alterações:
terraform plan -var-file="CreateVMwareVM.tfvars"
- Aplicar as alterações:
terraform apply -var-file="CreateVMwareVM.tfvars"
Confirme o prompt inserindo sim para aplicar as alterações.
Práticas recomendadas
- Usar o controle de versão: Mantenha seus arquivos de configuração do Terraform sob o controle de versão (por exemplo, Git) para acompanhar as alterações ao longo do tempo.
- Revisar os planos cuidadosamente: Sempre reveja a saída do plano do terraform antes de aplicar as alterações para garantir que você entenda quais alterações serão feitas.
- Gerenciamento de estado: Faça backup regularmente dos seus arquivos de estado do Terraform para evitar a perda de dados.