Создание виртуальной машины в VMware vCenter с помощью Azure Arc
В этой статье описывается подготовка виртуальной машины с помощью ресурсов vCenter из портал Azure.
Создание виртуальной машины на портале Azure.
После подключения виртуального центра VMware к Azure, представления ресурсов VMware vCenter в Azure и предоставления разрешений на эти ресурсы вы создадите виртуальную машину.
Необходимые компоненты
- Подписка Azure и группа ресурсов, в которой у вас есть роль участника виртуальной машины Arc VMware.
- Пул ресурсов, кластер или узел, на котором у вас есть роль пользователя частного облака Arc.
- Ресурс шаблона виртуальной машины, на котором у вас есть роль пользователя ресурса частного облака Arc.
- Ресурс виртуальной сети, в котором у вас есть роль пользователя ресурса частного облака Arc.
Выполните следующие действия, чтобы создать виртуальную машину в портал Azure:
В браузере перейдите на портал Azure. Перейдите к представлению обзора виртуальных машин. Вы увидите единый обзор виртуальных машин Azure и Arc.
Выберите "Добавить " и выберите компьютер Azure Arc в раскрывающемся списке.
Выберите группу подписок и ресурсов, в которой требуется развернуть виртуальную машину.
Укажите имя виртуальной машины и выберите пользовательское расположение, которое администратор предоставил вам.
Если поддерживаются несколько типов виртуальных машин, выберите VMware из раскрывающегося списка "Виртуальная машина ".
Выберите пул ресурсов, кластер или узел, в котором должна быть развернута виртуальная машина.
Выберите хранилище данных, которое вы хотите использовать для хранения.
Выберите шаблон, на основе которого вы создадите виртуальную машину.
Совет
Вы можете переопределить шаблон по умолчанию для ядер ЦП и памяти.
Если вы выбрали шаблон Windows, укажите имя пользователя, пароль для учетной записи администратора.
(Необязательно) Измените диски, настроенные в шаблоне. Например, можно добавить дополнительные диски или обновить существующие диски. Все диски и виртуальная машина будут находиться в хранилище данных, выбранном на шаге 6.
(Необязательно) Измените сетевые интерфейсы, настроенные в шаблоне. Например, можно добавить карты сетевого интерфейса или обновить существующие сетевые адаптеры. Вы также можете изменить сеть, к которой будет подключена эта сетевая карта, если у вас есть соответствующие разрешения для сетевого ресурса.
(Необязательно) При необходимости добавьте теги в ресурс виртуальной машины.
Нажмите кнопку "Создать " после проверки всех свойств. Чтобы создать виртуальную машину, потребуется несколько минут.
В этой статье описывается подготовка виртуальной машины с помощью ресурсов vCenter с помощью шаблона Bicep.
Создание компьютера Arc VMware с помощью шаблона Bicep
Следующий шаблон bicep можно использовать для создания компьютера Arc VMware. Ниже приведен список доступных шаблонов Azure Resource Manager (ARM), Bicep и Terraform для ресурсов VMware с поддержкой Arc. Чтобы активировать любую другую операцию Arc, преобразуйте соответствующий шаблон ARM в шаблон 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
В этой статье описывается подготовка виртуальной машины с помощью ресурсов vCenter с помощью шаблона Terraform.
Создание компьютера Arc VMware с помощью Terraform
Необходимые компоненты
- Подписка Azure. Убедитесь, что у вас есть активная подписка Azure.
- Terraform: установите Terraform на компьютере.
- Azure CLI: установите Azure CLI для проверки подлинности ресурсов и управления ими.
Выполните следующие действия, чтобы создать компьютер Arc VMware с помощью Terraform. В этой статье рассматриваются следующие два сценария:
- Для виртуальных машин, обнаруженных в инвентаризации vCenter, выполните включение в операции Azure и установите агенты Arc.
- Создайте виртуальную машину Arc VMware с помощью шаблонов, пула ресурсов, хранилища данных и установки агентов Arc.
Сценарий 1
Для виртуальных машин, обнаруженных в инвентаризации vCenter, выполните включение в операции Azure и установите агенты Arc.
Шаг 1. Определение переменных в файле variables.tf
Создайте файл с именем variables.tf и определите все необходимые переменные.
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
}
Шаг 2. Создание файла tfvars
Создайте файл с именем CreateVMwareVM.tfvars и укажите примеры значений для переменных.
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 "
Шаг 3. Изменение конфигурации для использования переменных
Создайте файл с именем main.tf и вставьте следующий код.
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]
}
Шаг 4. Выполнение команд Terraform
Используйте флаг -var-file для передачи файла .tfvars во время команд Terraform.
- Инициализация Terraform (если она еще не инициализирована):
terraform init
- Проверьте конфигурацию:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Планирование изменений:
terraform plan -var-file="CreateVMwareVM.tfvars"
- Примените изменения:
terraform apply -var-file="CreateVMwareVM.tfvars"
Подтвердите запрос, введя да, чтобы применить изменения.
Рекомендации
- Используйте управление версиями: сохраняйте файлы конфигурации Terraform под управлением версиями (например, Git), чтобы отслеживать изменения с течением времени.
- Внимательно просмотрите планы: всегда просматривайте выходные данные плана terraform перед применением изменений, чтобы убедиться, что изменения будут сделаны.
- Управление состоянием: регулярно резервное копирование файлов состояния Terraform, чтобы избежать потери данных.
Выполнив эти действия, вы можете эффективно создавать виртуальные машины HCRP и Arc VMware в Azure с помощью Terraform и устанавливать гостевые агенты на созданных виртуальных машинах.
Сценарий 2
Создайте виртуальную машину Arc VMware с помощью шаблонов, пула ресурсов, хранилища данных и установки агентов Arc.
Шаг 1. Определение переменных в файле variables.tf
Создайте файл с именем variables.tf и определите все необходимые переменные.
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
}
Шаг 2. Создание файла tfvars
Создайте файл с именем CreateVMwareVM.tfvars и укажите примеры значений для переменных.
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"
Шаг 3. Изменение конфигурации для использования переменных
Создайте файл с именем main.tf и вставьте следующий код.
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]
}
Шаг 4. Выполнение команд Terraform
Используйте флаг -var-file для передачи файла .tfvars во время команд Terraform.
- Инициализация Terraform (если она еще не инициализирована):
terraform init
- Проверьте конфигурацию:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Планирование изменений:
terraform plan -var-file="CreateVMwareVM.tfvars"
- Примените изменения:
terraform apply -var-file="CreateVMwareVM.tfvars"
Подтвердите запрос, введя да, чтобы применить изменения.
Рекомендации
- Используйте управление версиями: сохраняйте файлы конфигурации Terraform под управлением версиями (например, Git), чтобы отслеживать изменения с течением времени.
- Внимательно просмотрите планы: всегда просматривайте выходные данные плана terraform перед применением изменений, чтобы убедиться, что изменения будут сделаны.
- Управление состоянием: регулярно резервное копирование файлов состояния Terraform, чтобы избежать потери данных.