Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan hozhat létre munkamenet-gazdagépeket, és hogyan helyezheti üzembe őket egy AVD-gazdagépkészletben a Terraform használatával. Ez a cikk feltételezi, hogy már üzembe helyezte az Azure Virtual Desktop-infrastruktúrát.
A cikk a következő Terraform- és Terraform-szolgáltatói verziókkal lett tesztelve:
További információ a Terraform azure--ban való használatáról
Ebből a cikkből megtudhatja, hogyan:
- Hálózati adapter létrehozása az egyes munkamenet-gazdagépekhez a Terraform használatával
- Virtuális gép létrehozása munkamenet-gazdagéphez a Terraform használatával
- Virtuális gép csatlakoztatása tartományhoz
- Virtuális gép regisztrálása az Azure Virtual Desktopban
- Változófájl használata
1. A környezet konfigurálása
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .
A Terraform konfigurálása: Ha még nem tette meg, konfigurálja a Terraformot az alábbi lehetőségek egyikével:
2. A Terraform-kód implementálása
Hozzon létre egy könyvtárat, amelyben tesztelheti a Terraform-mintakódot, és az aktuális könyvtárá teheti.
Hozzon létre egy elnevezett
providers.tffájlt, és szúrja be a következő kódot.terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>2.0" } azuread = { source = "hashicorp/azuread" } } } provider "azurerm" { features {} }Főbb pontok:
- A
counthasználata annak jelzésére, hogy hány erőforrás fog létrejönni - Az infrastruktúra létrehozásakor létrehozott erőforrásokra hivatkozik – például
azurerm_subnet.subnet.idésazurerm_virtual_desktop_host_pool.hostpool.name. Ha ezen erőforrások nevét az adott szakaszból módosította, itt is frissítenie kell a hivatkozásokat.
- A
Hozzon létre egy
main.tfnevű fájlt, és szúrja be a következő kódot:locals { registration_token = azurerm_virtual_desktop_host_pool_registration_info.registrationinfo.token } resource "random_string" "AVD_local_password" { count = var.rdsh_count length = 16 special = true min_special = 2 override_special = "*!@#?" } resource "azurerm_resource_group" "rg" { name = var.rg location = var.resource_group_location } resource "azurerm_network_interface" "avd_vm_nic" { count = var.rdsh_count name = "${var.prefix}-${count.index + 1}-nic" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location ip_configuration { name = "nic${count.index + 1}_config" subnet_id = azurerm_subnet.subnet.id private_ip_address_allocation = "dynamic" } depends_on = [ azurerm_resource_group.rg ] } resource "azurerm_windows_virtual_machine" "avd_vm" { count = var.rdsh_count name = "${var.prefix}-${count.index + 1}" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location size = var.vm_size network_interface_ids = ["${azurerm_network_interface.avd_vm_nic.*.id[count.index]}"] provision_vm_agent = true admin_username = var.local_admin_username admin_password = var.local_admin_password os_disk { name = "${lower(var.prefix)}-${count.index + 1}" caching = "ReadWrite" storage_account_type = "Standard_LRS" } source_image_reference { publisher = "MicrosoftWindowsDesktop" offer = "Windows-10" sku = "20h2-evd" version = "latest" } depends_on = [ azurerm_resource_group.rg, azurerm_network_interface.avd_vm_nic ] } resource "azurerm_virtual_machine_extension" "domain_join" { count = var.rdsh_count name = "${var.prefix}-${count.index + 1}-domainJoin" virtual_machine_id = azurerm_windows_virtual_machine.avd_vm.*.id[count.index] publisher = "Microsoft.Compute" type = "JsonADDomainExtension" type_handler_version = "1.3" auto_upgrade_minor_version = true settings = <<SETTINGS { "Name": "${var.domain_name}", "OUPath": "${var.ou_path}", "User": "${var.domain_user_upn}@${var.domain_name}", "Restart": "true", "Options": "3" } SETTINGS protected_settings = <<PROTECTED_SETTINGS { "Password": "${var.domain_password}" } PROTECTED_SETTINGS lifecycle { ignore_changes = [settings, protected_settings] } depends_on = [ azurerm_virtual_network_peering.peer1, azurerm_virtual_network_peering.peer2 ] } resource "azurerm_virtual_machine_extension" "vmext_dsc" { count = var.rdsh_count name = "${var.prefix}${count.index + 1}-avd_dsc" virtual_machine_id = azurerm_windows_virtual_machine.avd_vm.*.id[count.index] publisher = "Microsoft.Powershell" type = "DSC" type_handler_version = "2.73" auto_upgrade_minor_version = true settings = <<-SETTINGS { "modulesUrl": "https://wvdportalstorageblob.blob.core.windows.net/galleryartifacts/Configuration_1.0.03419.1309.zip", "configurationFunction": "Configuration.ps1\\AddSessionHost", "properties": { "HostPoolName":"${azurerm_virtual_desktop_host_pool.hostpool.name}", "UseAgentDownloadEndpoint": "true" } } SETTINGS protected_settings = <<PROTECTED_SETTINGS { "properties": { "registrationInfoToken": "${local.registration_token}" } } PROTECTED_SETTINGS depends_on = [ azurerm_virtual_machine_extension.domain_join, azurerm_virtual_desktop_host_pool.hostpool ] }Hozzon létre egy
variables.tfnevű fájlt, és szúrja be a következő kódot:
variable "resource_group_location" {
default = "eastus"
description = "Location of the resource group."
}
variable "rg" {
type = string
default = "rg-avd-compute"
description = "Name of the Resource group in which to deploy session host"
}
variable "rdsh_count" {
description = "Number of AVD machines to deploy"
default = 2
}
variable "prefix" {
type = string
default = "avdtf"
description = "Prefix of the name of the AVD machine(s)"
}
variable "domain_name" {
type = string
default = "infra.local"
description = "Name of the domain to join"
}
variable "domain_user_upn" {
type = string
default = "domainjoineruser" # do not include domain name as this is appended
description = "Username for domain join (do not include domain name as this is appended)"
}
variable "domain_password" {
type = string
default = "ChangeMe123!"
description = "Password of the user to authenticate with the domain"
sensitive = true
}
variable "vm_size" {
description = "Size of the machine to deploy"
default = "Standard_DS2_v2"
}
variable "ou_path" {
default = ""
}
variable "local_admin_username" {
type = string
default = "localadm"
description = "local admin username"
}
variable "local_admin_password" {
type = string
default = "ChangeMe123!"
description = "local admin password"
sensitive = true
}
- Hozzon létre egy
output.tfnevű fájlt, és szúrja be a következő kódot:
output "location" {
description = "The Azure region"
value = azurerm_resource_group.rg.location
}
output "session_host_count" {
description = "The number of VMs created"
value = var.rdsh_count
}
output "dnsservers" {
description = "Custom DNS configuration"
value = azurerm_virtual_network.vnet.dns_servers
}
output "vnetrange" {
description = "Address range for deployment vnet"
value = azurerm_virtual_network.vnet.address_space
}
Hozzon létre egy
terraform.tfvarsnevű fájlt, és szúrja be a következő kódot:# Customized the sample values below for your environment and either rename to terraform.tfvars or env.auto.tfvars deploy_location = "west europe" rg_name = "avd-resources-rg" prefix = "avdtf" local_admin_username = "localadm" local_admin_password = "ChangeMe123$" vnet_range = ["10.1.0.0/16"] subnet_range = ["10.1.0.0/24"] dns_servers = ["10.0.1.4", "168.63.129.16"] aad_group_name = "AVDUsers" domain_name = "infra.local" domain_user_upn = "admin" # do not include domain name as this is appended domain_password = "ChangeMe123!" ad_vnet = "infra-network" ad_rg = "infra-rg" avd_users = [ "avduser01@infra.local", "avduser01@infra.local" ]
3. A Terraform inicializálása
Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.
terraform init -upgrade
Főbb pontok:
- A
-upgradeparaméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.
4. Terraform végrehajtási terv létrehozása
Végrehajtási terv létrehozásához futtassa a Terraform-tervet .
terraform plan -out main.tfplan
Főbb pontok:
- A
terraform planparancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-outparaméter lehetővé teszi a terv kimeneti fájljának megadását. A-outparaméter használatával biztosítható, hogy az ön által áttekintett terv pontosan az alkalmazott legyen.
5. A Terraform végrehajtási terv alkalmazása
Használja a terraform apply parancsot a végrehajtási terv felhőinfrastruktúrára való alkalmazásához.
terraform apply main.tfplan
Főbb pontok:
- A példaparancs
terraform applyfeltételezi, hogy korábban lefuttattad aterraform plan -out main.tfplanparancsot. - Ha másik fájlnevet adott meg a
-outparaméterhez, használja ugyanazt a fájlnevet aterraform applyhívásában. - Ha nem használta a
-outparamétert, hívja meg aterraform applyparaméterek nélkül.
6. Ellenőrizze az eredményeket
- Az Azure Portalon válassza az Azure Virtual Desktopot.
- Válassza a Gazdagépkészletek lehetőséget, majd a létrehozott készlet nevét.
- Válassza ki a munkamenet-gazdagépeket, majd ellenőrizze, hogy a munkamenet-gazdagép szerepel-e a listában.
7. Erőforrások törlése
Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:
Csinálja meg a terraform plan parancsot, és adja meg a
destroyjelzőt.terraform plan -destroy -out main.destroy.tfplanFőbb pontok:
- A
terraform planparancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-outparaméter lehetővé teszi a terv kimeneti fájljának megadását. A-outparaméter használatával biztosítható, hogy az ön által áttekintett terv pontosan az alkalmazott legyen.
- A
A végrehajtási terv alkalmazásához futtassa a terraform apply parancsot.
terraform apply main.destroy.tfplan
A Terraform hibaelhárítása az Azure-ban
A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása
Következő lépések
További információ a Terraform azure--ban való használatáról