Inicio rápido: Implementación del primer recurso de actualización de Azure con el proveedor de Terraform de AzAPI
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, aprenderá a usar el proveedor de Terraform de AzAPI para administrar una nueva característica de un servicio de Azure que no es compatible actualmente con el proveedor de AzureRM. azapi_update_resource
se usará para administrar un conjunto de reglas de red de Azure EventHub.
- Definición y configuración de los proveedores de AzureRM y AzAPI
- Generación de un nombre aleatorio para el espacio de nombres de Event Hubs
- Uso del proveedor de AzureRM para crear un grupo de recursos de Azure y los recursos necesarios de red y Event Hubs
- Use el proveedor AzAPI para agregar un conjunto de reglas de red a los
azurerm_eventhub_namespace
recursos.
Nota:
El código de ejemplo de este artículo se encuentra en el repositorio de GitHub de Terraform para Azure.
Requisitos previos
- 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:
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 { azapi = { source = "azure/azapi" version = "=0.1.0" } azurerm = { source = "hashicorp/azurerm" version = "=3.0.2" } random = { source = "hashicorp/random" version = "=3.1.2" } } } provider "azapi" { } provider "azurerm" { features {} } provider "random" { }
Cree un archivo denominado
main.tf
e inserte el siguiente código:resource "azurerm_resource_group" "qs101" { name = "rg-qs101-eh-rules" location = "westus2" } resource "azurerm_virtual_network" "qs101" { name = "myvnet" location = azurerm_resource_group.qs101.location resource_group_name = azurerm_resource_group.qs101.name address_space = ["172.17.0.0/16"] dns_servers = ["10.0.0.4", "10.0.0.5"] } resource "azurerm_subnet" "qs101" { name = "default" resource_group_name = azurerm_resource_group.qs101.name virtual_network_name = azurerm_virtual_network.qs101.name address_prefixes = ["172.17.0.0/24"] service_endpoints = ["Microsoft.EventHub"] } resource "random_pet" "qs101_namespace" { length = 3 separator = "" } resource "azurerm_eventhub_namespace" "qs101" { name = random_pet.qs101_namespace.id location = azurerm_resource_group.qs101.location resource_group_name = azurerm_resource_group.qs101.name sku = "Standard" capacity = 2 }
Cree un archivo denominado
main-generic.tf
e inserte el siguiente código:# AzAPI update resource is used to enable Network Rule sets on Event Hub namespace resource "azapi_update_resource" "qs101" { type = "Microsoft.EventHub/namespaces/networkRuleSets@2021-11-01" name = "default" parent_id = azurerm_eventhub_namespace.qs101.id body = jsonencode({ properties = { defaultAction = "Deny" publicNetworkAccess = "Enabled" virtualNetworkRules = [ { ignoreMissingVnetServiceEndpoint = false subnet = { # API bug, returned id replaced `resourceGroups` with `resourcegroups` id = replace(azurerm_subnet.qs101.id, "resourceGroups", "resourcegroups") } } ] ipRules = [ { action = "Allow" ipMask = "1.1.1.1" } ] } }) }
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.
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.
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.
Verificación de los resultados
Ejecute az eventhubs namespace network-rule list para mostrar las reglas de red del espacio de nombres de Event Hubs.
az eventhubs namespace network-rule list --resource-group <resource_group_name> --namespace-name <namespace_name>
Puntos clave:
- El nombre del grupo de recursos y el nombre del espacio de nombres de Event Hubs se muestran en la
terraform apply
salida.
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