Azure Arc kullanarak VMware vCenter'da sanal makine oluşturma
Bu makalede, Azure portalından vCenter kaynaklarını kullanarak vm sağlama açıklanmaktadır.
Azure portalında bir VM oluşturma
Yöneticiniz bir VMware vCenter'ı Azure'a bağladıktan, Azure'daki VMware vCenter kaynaklarını temsil ettikten ve size bu kaynaklar üzerinde izinler sağladıktan sonra bir sanal makine oluşturacaksınız.
Önkoşullar
- Arc VMware VM katkıda bulunan rolüne sahip olduğunuz bir Azure aboneliği ve kaynak grubu.
- Arc Özel Bulut Kaynağı Kullanıcı Rolüne sahip olduğunuz kaynak havuzu/küme/konak.
- Arc Özel Bulut Kaynağı Kullanıcı Rolünüz olan bir sanal makine şablonu kaynağı.
- Arc Özel Bulut Kaynağı Kullanıcı Rolünüz olan bir sanal ağ kaynağı.
Azure portalında VM oluşturmak için şu adımları izleyin:
Tarayıcınızdan Azure portal’a gidin. Sanal makineler göz atma görünümüne gidin. Azure ve Arc sanal makineleri için birleşik bir göz atma deneyimi göreceksiniz.
Ekle'yi ve ardından açılan listeden Azure Arc makinesi'ni seçin.
VM'yi dağıtmak istediğiniz Abonelik ve Kaynak grubunu seçin.
Sanal makine adını belirtin ve ardından yöneticinizin sizinle paylaştığı özel konumu seçin.
Birden çok vm türü destekleniyorsa Sanal makine türü açılan listesindeN VMware'i seçin.
VM'nin dağıtılacağı Kaynak havuzunu/kümeyi/konağı seçin.
Depolama için kullanmak istediğiniz veri depolarını seçin.
VM'yi oluşturacağınız Şablon'u seçin.
İpucu
CPU Çekirdekleri ve Bellek için şablon varsayılanlarını geçersiz kılabilirsiniz.
Bir Windows şablonu seçtiyseniz, Yönetici hesabı için bir Kullanıcı Adı, Parola girin.
(İsteğe bağlı) Şablonda yapılandırılan diskleri değiştirin. Örneğin, daha fazla disk ekleyebilir veya mevcut diskleri güncelleştirebilirsiniz. 6. adımda seçilen veri deposunda tüm diskler ve VM'ler yer alır.
(İsteğe bağlı) Şablonda yapılandırılan ağ arabirimlerini değiştirin. Örneğin, ağ arabirimi (NIC) kartları ekleyebilir veya mevcut NIC'leri güncelleştirebilirsiniz. Ağ kaynağı için uygun izinlere sahip olmanız koşuluyla, bu NIC'nin bağlanacağı ağı da değiştirebilirsiniz.
(İsteğe bağlı) Gerekirse VM kaynağına etiketler ekleyin.
Tüm özellikleri gözden geçirdikten sonra Oluştur'u seçin. VM'nin oluşturulması birkaç dakika sürer.
Bu makalede, Bicep şablonu kullanarak vCenter kaynaklarını kullanarak vm sağlama açıklanmaktadır.
Bicep şablonunu kullanarak Arc VMware makinesi oluşturma
Arc VMware makinesi oluşturmak için aşağıdaki bicep şablonu kullanılabilir. Arc özellikli VMware kaynakları için kullanılabilir Azure Resource Manager (ARM), Bicep ve Terraform şablonlarının listesi aşağıdadır . Başka bir Arc işlemini tetikleyebilmek için ilgili ARM şablonunu Bicep şablonuna dönüştürün.
// 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
Bu makalede Terraform şablonu kullanarak vCenter kaynaklarını kullanarak vm sağlama açıklanmaktadır.
Terraform ile Arc VMware makinesi oluşturma
Önkoşullar
- Azure Aboneliği: Etkin bir Azure aboneliğiniz olduğundan emin olun.
- Terraform: Terraform'u makinenize yükleyin.
- Azure CLI: Kaynakların kimliğini doğrulamak ve yönetmek için Azure CLI'yi yükleyin.
Terraform kullanarak Arc VMware makinesi oluşturmak için bu adımları izleyin. Bu makalede aşağıdaki iki senaryo ele alınmıştır:
- vCenter envanterinde bulunan VM'ler için Azure işleminde etkinleştirme gerçekleştirin ve Arc aracılarını yükleyin.
- Şablonları, Kaynak havuzunu, Datastore'yu kullanarak yeni bir Arc VMware VM oluşturun ve Arc aracılarını yükleyin.
1. Senaryo
vCenter envanterinde bulunan VM'ler için Azure işleminde etkinleştirme gerçekleştirin ve Arc aracılarını yükleyin.
1. Adım: variables.tf dosyasında değişkenleri tanımlama
variables.tf adlı bir dosya oluşturun ve gerekli tüm değişkenleri tanımlayın.
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. Adım: Tfvars dosyası oluşturma
CreateVMwareVM.tfvars adlı bir dosya oluşturun ve değişkenler için örnek değerler sağlayın.
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. Adım: Yapılandırmayı değişkenleri kullanacak şekilde değiştirme
main.tf adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin.
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. Adım: Terraform komutlarını çalıştırma
Terraform komutları sırasında .tfvars dosyasını geçirmek için -var-file bayrağını kullanın.
- Terraform'ı başlatın (henüz başlatılmadıysa):
terraform init
- Yapılandırmayı doğrulayın:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Değişiklikleri planlayın:
terraform plan -var-file="CreateVMwareVM.tfvars"
- Değişiklikleri uygulayın:
terraform apply -var-file="CreateVMwareVM.tfvars"
Değişiklikleri uygulamak için evet yazarak istemi onaylayın.
En iyi yöntemler
- Sürüm denetimini kullanma: Terraform yapılandırma dosyalarınızı zaman içinde değişiklikleri izlemek için sürüm denetimi (örneğin Git) altında tutun.
- Planları dikkatle gözden geçirin: Değişiklikleri uygulamadan önce her zaman terraform planının çıkışını gözden geçirerek hangi değişikliklerin gerçekleştirileceğini anladığınızdan emin olun.
- Durum yönetimi: Veri kaybını önlemek için Terraform durum dosyalarınızı düzenli olarak yedekleyin.
Bu adımları izleyerek Terraform kullanarak Azure'da HCRP ve Arc VMware VM'lerini etkili bir şekilde oluşturup yönetebilir ve oluşturulan VM'lere konuk aracıları yükleyebilirsiniz.
2. Senaryo
Şablonları, Kaynak havuzunu, Datastore'yu kullanarak yeni bir Arc VMware VM oluşturun ve Arc aracılarını yükleyin.
1. Adım: variables.tf dosyasında değişkenleri tanımlama
variables.tf adlı bir dosya oluşturun ve gerekli tüm değişkenleri tanımlayın.
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. Adım: tfvars dosyası oluşturma
CreateVMwareVM.tfvars adlı bir dosya oluşturun ve değişkenler için örnek değerler sağlayın.
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. Adım: Yapılandırmayı değişkenleri kullanacak şekilde değiştirme
main.tf adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin.
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. Adım: Terraform komutlarını çalıştırma
Terraform komutları sırasında .tfvars dosyasını geçirmek için -var-file bayrağını kullanın.
- Terraform'ı başlatın (henüz başlatılmadıysa):
terraform init
- Yapılandırmayı doğrulayın:
terraform validate -var-file="CreateVMwareVM.tfvars"
- Değişiklikleri planlayın:
terraform plan -var-file="CreateVMwareVM.tfvars"
- Değişiklikleri uygulayın:
terraform apply -var-file="CreateVMwareVM.tfvars"
Değişiklikleri uygulamak için evet yazarak istemi onaylayın.
En iyi yöntemler
- Sürüm denetimini kullanma: Terraform yapılandırma dosyalarınızı zaman içinde değişiklikleri izlemek için sürüm denetimi (örneğin Git) altında tutun.
- Planları dikkatle gözden geçirin: Değişiklikleri uygulamadan önce her zaman terraform planının çıkışını gözden geçirerek hangi değişikliklerin gerçekleştirileceğini anladığınızdan emin olun.
- Durum yönetimi: Veri kaybını önlemek için Terraform durum dosyalarınızı düzenli olarak yedekleyin.
Sonraki adımlar
Azure'daki VMware VM'lerinde işlem gerçekleştirme.