Configuración de Azure Virtual Desktop con Terraform
Artículo probado con las siguientes versiones del proveedor de AzureRM y Terraform:
Terraform habilita la definición, vista previa e implementación de la infraestructura en la nube. Con Terraform, se crean archivos de configuración mediante la sintaxis de HCL. La sintaxis de HCL permite especificar el proveedor de la nube, como Azure, y los elementos que componen la infraestructura de la nube. Después de crear los archivos de configuración, se crea un plan de ejecución que permite obtener una vista previa de los cambios de infraestructura antes de implementarlos. Una vez que compruebe los cambios, aplique el plan de ejecución para implementar la infraestructura.
En este artículo se proporciona información general sobre cómo usar Terraform para implementar un entorno de Azure Virtual Desktop de ARM, no avD clásico.
Hay varios requisitos previos para Azure Virtual Desktop
¿No está familiarizado con Azure Virtual Desktop? Comience con ¿Qué es Azure Virtual Desktop?
Se supone que una base de plataforma adecuada ya está configurada, que puede o no ser la base de la plataforma de la zona de aterrizaje de escala empresarial.
En este artículo aprenderá a:
- Uso de Terraform para crear un área de trabajo de Azure Virtual Desktop
- Uso de Terraform para crear un grupo de hosts de Azure Virtual Desktop
- Uso de Terraform para crear un grupo de aplicaciones de Escritorio de Azure
- Asociar un área de trabajo y un grupo de aplicaciones de escritorio
1. Configurar su entorno
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Configuración de Terraform: si aún no lo ha hecho, configure Terraform con una de las siguientes opciones:
2. Implementación del código de Terraform
Cree un directorio en el que probar el código de ejemplo de Terraform y conviértalo en el directorio actual.
Cree un archivo denominado
providers.tf
e inserte el siguiente código:terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>2.0" } azuread = { source = "hashicorp/azuread" } } } provider "azurerm" { features {} }
Cree un archivo denominado
main.tf
e inserte el siguiente código:# 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 }
Cree un archivo denominado
variables.tf
e inserte el siguiente código: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)" }
Cree un archivo denominado
output.tf
e inserte el siguiente código: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. Inicialización de Terraform
Para inicializar la implementación de Terraform, ejecute terraform init. Este comando descarga el proveedor de Azure necesario para administrar los recursos de Azure.
terraform init -upgrade
Puntos clave:
- El parámetro
-upgrade
actualiza los complementos de proveedor necesarios a la versión más reciente que cumpla con las restricciones de versión de la configuración.
4. Creación de un plan de ejecución de Terraform
Ejecute terraform plan para crear un plan de ejecución.
terraform plan -out main.tfplan
Puntos clave:
- El comando
terraform plan
crea un plan de ejecución, pero no lo ejecuta. En su lugar, determina qué acciones son necesarias para crear la configuración especificada en los archivos de configuración. Este patrón le permite comprobar si el plan de ejecución coincide con sus expectativas antes de realizar cambios en los recursos reales. - El parámetro
-out
opcional permite especificar un archivo de salida para el plan. El uso del parámetro-out
garantiza que el plan que ha revisado es exactamente lo que se aplica.
5. Aplicación de un plan de ejecución de Terraform
Ejecute terraform apply para aplicar el plan de ejecución a su infraestructura en la nube.
terraform apply main.tfplan
Puntos clave:
- El comando
terraform apply
de ejemplo asume que ejecutóterraform plan -out main.tfplan
previamente. - Si especificó un nombre de archivo diferente para el parámetro
-out
, use ese mismo nombre de archivo en la llamada aterraform apply
. - Si no ha utilizado el parámetro
-out
, llame aterraform apply
sin ningún parámetro.
6. Verificación de los resultados
- En Azure Portal, seleccione Azure Virtual Desktop.
- Seleccione Grupos de hosts y, a continuación, el nombre del recurso creado .
- Seleccione Hosts de sesión y compruebe que aparece el host de sesión.
7. Limpieza de recursos
Cuando ya no necesite los recursos creados a través de Terraform, realice los pasos siguientes:
Ejecute el comando terraform plan y especifique la marca
destroy
.terraform plan -destroy -out main.destroy.tfplan
Puntos clave:
- El comando
terraform plan
crea un plan de ejecución, pero no lo ejecuta. En su lugar, determina qué acciones son necesarias para crear la configuración especificada en los archivos de configuración. Este patrón le permite comprobar si el plan de ejecución coincide con sus expectativas antes de realizar cambios en los recursos reales. - El parámetro
-out
opcional permite especificar un archivo de salida para el plan. El uso del parámetro-out
garantiza que el plan que ha revisado es exactamente lo que se aplica.
- El comando
Ejecute terraform apply para aplicar el plan de ejecución.
terraform apply main.destroy.tfplan
Solución de problemas de Terraform en Azure
Solución de problemas comunes al usar Terraform en Azure
Pasos siguientes
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de