Partager via


Créer une machine virtuelle sur VMware vCenter à l’aide d’Azure Arc

Cet article explique comment approvisionner une machine virtuelle à l’aide de ressources vCenter à partir du portail Azure.

Créer une machine virtuelle dans le portail Azure

Une fois que votre administrateur a connecté un ordinateur VMware vCenter à Azure, a représenté des ressources VMware vCenter dans Azure et vous a fourni des autorisations sur ces ressources, vous allez créer une machine virtuelle.

Prérequis

  • Un abonnement Azure et un groupe de ressources dans lesquels vous avez un rôle de contributeur de machine virtuelle VMware Arc.
  • Un pool de ressources/cluster/hôte sur lequel vous disposez d’un rôle d’utilisateur de ressource de cloud privé Arc.
  • Une ressource de modèle de machine virtuelle sur laquelle vous avez un rôle d’utilisateur de ressource de cloud privé Arc.
  • Une ressource de réseau virtuel sur laquelle vous avez un rôle d’utilisateur de ressource de cloud privé Arc.

Suivez ces étapes pour créer une machine virtuelle dans le portail Azure :

  1. À partir de votre navigateur, accédez au portail Azure. Accédez à la vue d’exploration des machines virtuelles. Vous verrez une expérience de navigation unifiée pour Azure et les machines virtuelles Arc.

    Capture d’écran montrant l’expérience de navigation unifiée pour Azure et les machines virtuelles Arc.

  2. Sélectionnez Ajouter, puis Machine Azure Arc dans le menu déroulant.

    Capture d’écran montrant l’onglet Bases pour la création d’une machine virtuelle Azure Arc.

  3. Sélectionnez l’abonnement et le groupe de ressources dans lequel vous souhaitez déployer la machine virtuelle.

  4. Indiquez le nom de la machine virtuelle, puis sélectionnez un emplacement personnalisé que votre administrateur a partagé avec vous.

    Si plusieurs types de machines virtuelles sont pris en charge, sélectionnez VMware dans la liste déroulante Type de machine virtuelle.

  5. Sélectionnez le pool de ressources/cluster/hôte dans lequel la machine virtuelle doit être déployée.

  6. Sélectionnez le magasin de données que vous souhaitez utiliser pour le stockage.

  7. Sélectionnez le modèle selon lequel vous créerez la machine virtuelle.

    Conseil

    Vous pouvez remplacer les valeurs par défaut du modèle pour les cœurs de processeur et la mémoire.

    Si vous avez sélectionné un modèle Windows, indiquez un nom d’utilisateur et un mot de passe pour le compte Administrateur.

  8. (Facultatif) Modifiez les disques configurés dans le modèle. Par exemple, vous pouvez ajouter d’autres disques ou mettre à jour des disques existants. Tous les disques et machines virtuelles figureront sur le magasin de données sélectionné à l’étape 6.

  9. (Facultatif) Modifiez les interfaces réseau configurées dans le modèle. Par exemple, vous pouvez ajouter des cartes d’interface réseau ou mettre à jour des cartes réseau existantes. Vous pouvez également modifier le réseau auquel cette carte réseau sera attachée, à condition que vous disposiez des autorisations appropriées pour la ressource réseau.

  10. (Facultatif) Ajoutez des étiquettes à la ressource de machine virtuelle, si nécessaire.

  11. Sélectionnez Créer après avoir examiné toutes les propriétés. La création de la machine virtuelle peut prendre plusieurs minutes.

Cet article explique comment approvisionner une machine virtuelle à l’aide de ressources vCenter en utilisant un modèle Bicep.

Créer une machine Arc VMware à l’aide d’un modèle Bicep

Le modèle Bicep suivant peut être utilisé pour créer une machine Arc VMware. Ici se trouve la liste des modèles Azure Resource Manager (ARM), Bicep et Terraform disponibles pour les ressources VMware avec Arc. Pour déclencher une autre opération Arc, convertissez le modèle ARM correspondant en modèle 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

Cet article explique comment approvisionner une machine virtuelle à l’aide de ressources vCenter en utilisant un modèle Terraform.

Créer une machine Arc VMware avec Terraform

Prérequis

  • Abonnement Azure : Veillez à avoir un abonnement Azure actif.
  • Terraform : Installez Terraform sur votre ordinateur.
  • Azure CLI : Installez Azure CLI pour authentifier et gérer les ressources.

Suivez ces étapes pour créer une machine Arc VMware à l’aide de Terraform. Les deux scénarios suivants sont traités dans cet article :

  1. Pour les machines virtuelles découvertes dans l’inventaire vCenter, effectuez l’opération d’activation dans Azure et installez les agents Arc.
  2. Créez une machine virtuelle Arc VMware avec des modèles, un pool de ressources et un magasin de données, puis installez les agents Arc.

Scénario 1

Pour les machines virtuelles découvertes dans l’inventaire vCenter, effectuez l’opération d’activation dans Azure et installez les agents Arc.

Étape 1 : Définir des variables dans un fichier variables.tf

Créez un fichier nommé variables.tf et définissez toutes les variables nécessaires.

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
}

Étape 2 : Créer un fichier tfvars

Créez un fichier nommé CreateVMwareVM.tfvars et fournissez des exemples de valeurs pour les 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 "

Étape 3 : Modifier la configuration pour utiliser des variables

Créez un fichier nommé main.tf et insérez le code suivant.

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

Étape 4 : Exécuter des commandes Terraform

Utilisez l’indicateur -var-file pour passer le fichier .tfvars pendant l’exécution des commandes Terraform.

  1. Initialisez Terraform (s’il ne l’est pas déjà) : terraform init
  2. Validez la configuration : terraform validate -var-file="CreateVMwareVM.tfvars"
  3. Planifiez les changements : terraform plan -var-file="CreateVMwareVM.tfvars"
  4. Appliquez les changements : terraform apply -var-file="CreateVMwareVM.tfvars"

Confirmez l’invite en entrant oui pour appliquer les changements.

Bonnes pratiques

  • Utilisez un logiciel de gestion de versions : Conservez vos fichiers de configuration Terraform dans un logiciel de gestion de versions (par exemple, Git) pour suivre les changements au fil du temps.
  • Passez attentivement en revue les plans: Passez toujours en revue la sortie du plan Terraform avant d’appliquer des changements pour vous assurer de bien comprendre ceux qui seront apportés.
  • Gestion des états : Sauvegardez régulièrement vos fichiers d’état Terraform pour éviter toute perte de données.

En suivant ces étapes, vous pouvez créer et gérer efficacement des machines virtuelles HCRP et Arc VMware sur Azure à l’aide de Terraform et installer des agents invités sur les machines virtuelles créées.

Scénario 2

Créez une machine virtuelle Arc VMware avec des modèles, un pool de ressources et un magasin de données, puis installez les agents Arc.

Étape 1 : Définir des variables dans un fichier variables.tf

Créez un fichier nommé variables.tf et définissez toutes les variables nécessaires.

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
}

Étape 2 : Créer un fichier tfvars

Créez un fichier nommé CreateVMwareVM.tfvars et fournissez des exemples de valeurs pour les 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"

Étape 3 : Modifier la configuration pour utiliser des variables

Créez un fichier nommé main.tf et insérez le code suivant.

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

Étape 4 : Exécuter des commandes Terraform

Utilisez l’indicateur -var-file pour passer le fichier .tfvars pendant l’exécution des commandes Terraform.

  1. Initialisez Terraform (s’il ne l’est pas déjà) : terraform init
  2. Validez la configuration : terraform validate -var-file="CreateVMwareVM.tfvars"
  3. Planifiez les changements : terraform plan -var-file="CreateVMwareVM.tfvars"
  4. Appliquez les changements : terraform apply -var-file="CreateVMwareVM.tfvars"

Confirmez l’invite en entrant oui pour appliquer les changements.

Bonnes pratiques

  • Utilisez un logiciel de gestion de versions : Conservez vos fichiers de configuration Terraform dans un logiciel de gestion de versions (par exemple, Git) pour suivre les changements au fil du temps.
  • Passez attentivement en revue les plans: Passez toujours en revue la sortie du plan Terraform avant d’appliquer des changements pour vous assurer de bien comprendre ceux qui seront apportés.
  • Gestion des états : Sauvegardez régulièrement vos fichiers d’état Terraform pour éviter toute perte de données.

Étapes suivantes

Effectuer des opérations sur des machines virtuelles VMware dans Azure.