Azure Virtual Desktop configureren met Terraform
Artikel getest met de volgende versies van Terraform en Terraform-providers:
Terraform maakt de definitie, preview en implementatie van de cloudinfrastructuur mogelijk. Met Behulp van Terraform maakt u configuratiebestanden met behulp van de HCL-syntaxis. Met de HCL-syntaxis kunt u de cloudprovider opgeven, zoals Azure, en de elementen waaruit uw cloudinfrastructuur bestaat. Nadat u uw configuratiebestanden hebt gemaakt, maakt u een uitvoeringsplan waarmee u een voorbeeld van uw infrastructuurwijzigingen kunt bekijken voordat ze worden geïmplementeerd. Zodra u de wijzigingen hebt gecontroleerd, past u het uitvoeringsplan toe om de infrastructuur te implementeren.
Dit artikel bevat een overzicht van het gebruik van Terraform voor het implementeren van een ARM Azure Virtual Desktop-omgeving, niet van AVD Classic.
Er zijn verschillende vereisten voor Azure Virtual Desktop
Nieuw bij Azure Virtual Desktop? Begin met Wat is Azure Virtual Desktop?
Er wordt vanuit gegaan dat er al een geschikte platformbasis is ingesteld. Dit kan de basis van het Enterprise Scale Landing Zone-platform zijn.
In dit artikel leert u het volgende:
- Terraform gebruiken om een Azure Virtual Desktop-werkruimte te maken
- Terraform gebruiken om een Azure Virtual Desktop-hostgroep te maken
- Terraform gebruiken om een Azure Desktop-toepassingsgroep te maken
- Een werkruimte en een bureaubladtoepassingsgroep koppelen
1. Uw omgeving configureren
- Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
Terraform configureren: Als u dit nog niet hebt gedaan, configureert u Terraform met een van de volgende opties:
2. De Terraform-code implementeren
Maak een map waarin u de Terraform-voorbeeldcode wilt testen en de huidige map kunt maken.
Maak een bestand met de naam
providers.tf
en voeg de volgende code in:terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>2.0" } azuread = { source = "hashicorp/azuread" } } } provider "azurerm" { features {} }
Maak een bestand met de naam
main.tf
en voeg de volgende code in:# Resource group name is output when execution plan is applied. resource "azurerm_resource_group" "sh" { name = var.rg_name location = var.resource_group_location } # Create AVD workspace resource "azurerm_virtual_desktop_workspace" "workspace" { name = var.workspace resource_group_name = azurerm_resource_group.sh.name location = azurerm_resource_group.sh.location friendly_name = "${var.prefix} Workspace" description = "${var.prefix} Workspace" } # Create AVD host pool resource "azurerm_virtual_desktop_host_pool" "hostpool" { resource_group_name = azurerm_resource_group.sh.name location = azurerm_resource_group.sh.location name = var.hostpool friendly_name = var.hostpool validate_environment = true custom_rdp_properties = "audiocapturemode:i:1;audiomode:i:0;" description = "${var.prefix} Terraform HostPool" type = "Pooled" maximum_sessions_allowed = 16 load_balancer_type = "DepthFirst" #[BreadthFirst DepthFirst] } resource "azurerm_virtual_desktop_host_pool_registration_info" "registrationinfo" { hostpool_id = azurerm_virtual_desktop_host_pool.hostpool.id expiration_date = var.rfc3339 } # Create AVD DAG resource "azurerm_virtual_desktop_application_group" "dag" { resource_group_name = azurerm_resource_group.sh.name host_pool_id = azurerm_virtual_desktop_host_pool.hostpool.id location = azurerm_resource_group.sh.location type = "Desktop" name = "${var.prefix}-dag" friendly_name = "Desktop AppGroup" description = "AVD application group" depends_on = [azurerm_virtual_desktop_host_pool.hostpool, azurerm_virtual_desktop_workspace.workspace] } # Associate Workspace and DAG resource "azurerm_virtual_desktop_workspace_application_group_association" "ws-dag" { application_group_id = azurerm_virtual_desktop_application_group.dag.id workspace_id = azurerm_virtual_desktop_workspace.workspace.id }
Maak een bestand met de naam
variables.tf
en voeg de volgende code in:variable "resource_group_location" { default = "eastus" description = "Location of the resource group." } variable "rg_name" { type = string default = "rg-avd-resources" description = "Name of the Resource group in which to deploy service objects" } variable "workspace" { type = string description = "Name of the Azure Virtual Desktop workspace" default = "AVD TF Workspace" } variable "hostpool" { type = string description = "Name of the Azure Virtual Desktop host pool" default = "AVD-TF-HP" } variable "rfc3339" { type = string default = "2022-03-30T12:43:13Z" description = "Registration token expiration" } variable "prefix" { type = string default = "avdtf" description = "Prefix of the name of the AVD machine(s)" }
Maak een bestand met de naam
output.tf
en voeg de volgende code in:output "azure_virtual_desktop_compute_resource_group" { description = "Name of the Resource group in which to deploy session host" value = azurerm_resource_group.sh.name } output "azure_virtual_desktop_host_pool" { description = "Name of the Azure Virtual Desktop host pool" value = azurerm_virtual_desktop_host_pool.hostpool.name } output "azurerm_virtual_desktop_application_group" { description = "Name of the Azure Virtual Desktop DAG" value = azurerm_virtual_desktop_application_group.dag.name } output "azurerm_virtual_desktop_workspace" { description = "Name of the Azure Virtual Desktop workspace" value = azurerm_virtual_desktop_workspace.workspace.name } output "location" { description = "The Azure region" value = azurerm_resource_group.sh.location } output "AVD_user_groupname" { description = "Azure Active Directory Group for AVD users" value = azuread_group.aad_group.display_name }
3. Terraform initialiseren
Voer terraform init uit om de Terraform-implementatie te initialiseren. Met deze opdracht wordt de Azure-provider gedownload die is vereist voor het beheren van uw Azure-resources.
terraform init -upgrade
Belangrijkste punten:
- Met
-upgrade
de parameter worden de benodigde providerinvoegtoepassingen bijgewerkt naar de nieuwste versie die voldoet aan de versiebeperkingen van de configuratie.
4. Een Terraform-uitvoeringsplan maken
Voer terraform-plan uit om een uitvoeringsplan te maken.
terraform plan -out main.tfplan
Belangrijkste punten:
- De
terraform plan
opdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-out
parameter kunt u een uitvoerbestand voor het plan opgeven. Door de-out
parameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
5. Een Terraform-uitvoeringsplan toepassen
Terraform uitvoeren is van toepassing om het uitvoeringsplan toe te passen op uw cloudinfrastructuur.
terraform apply main.tfplan
Belangrijkste punten:
- Bij de voorbeeldopdracht
terraform apply
wordt ervan uitgegaan dat u eerder hebt uitgevoerdterraform plan -out main.tfplan
. - Als u een andere bestandsnaam voor de
-out
parameter hebt opgegeven, gebruikt u diezelfde bestandsnaam in de aanroep naarterraform apply
. - Als u de parameter niet hebt gebruikt, roept
terraform apply
u deze-out
aan zonder parameters.
6. Controleer de resultaten
- Selecteer Azure Virtual Desktop in azure Portal.
- Selecteer Hostgroepen en vervolgens de naam van de gemaakte poolresource.
- Selecteer Sessiehosts en controleer vervolgens of de sessiehost wordt vermeld.
7. Resources opschonen
Voer de volgende stappen uit wanneer u de resources die zijn gemaakt via Terraform niet meer nodig hebt:
Voer terraform-plan uit en geef de
destroy
vlag op.terraform plan -destroy -out main.destroy.tfplan
Belangrijkste punten:
- De
terraform plan
opdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-out
parameter kunt u een uitvoerbestand voor het plan opgeven. Door de-out
parameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
- De
Terraform uitvoeren is van toepassing om het uitvoeringsplan toe te passen.
terraform apply main.destroy.tfplan
Problemen met Terraform in Azure oplossen
Veelvoorkomende problemen oplossen bij het gebruik van Terraform in Azure
Volgende stappen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor