Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Terraform habilita la definición, la versión preliminar y la 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.
Use azapi_resource_action como un recurso de Terraform administrado para realizar operaciones imperativas y de cambio de estado en recursos de Azure. En este ejemplo, creará una cuenta de almacenamiento Azure y, a continuación, rotará sus claves de acceso.
azapi_resource_action tiene dos formas de uso:
-
Recurso: realiza una operación de cambio de estado durante
terraform apply. Terraform realiza un seguimiento de la acción en el estado y, de manera opcional, puede revertirla enterraform destroy. - Origen de datos: realiza una operación de solo lectura durante la planeación. Consulte la guía de inicio rápido del origen de datos de acción de recursos para ese escenario.
Use el formulario de recursos cuando necesite Terraform para realizar una operación de Azure que no se basa en un ciclo de vida estándar de creación, lectura, actualización y eliminación, por ejemplo, rotación de credenciales, inicio o detención de una máquina virtual o desencadenamiento de una conmutación por error.
- Creación de una cuenta de almacenamiento con el proveedor de AzureRM
- Gira la clave de acceso de la cuenta de almacenamiento con
azapi_resource_action
Prerequisites
- Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Configurar Terraform: si aún no lo ha hecho, configure Terraform con una de las siguientes opciones:
Al iniciar sesión en Azure Portal con una cuenta Microsoft, se usa la suscripción de Azure predeterminada para esa cuenta.
Terraform se autentica automáticamente mediante la información de la suscripción de Azure predeterminada.
Ejecute az account show para comprobar la cuenta Microsoft actual y la suscripción de Azure.
az account show
Los cambios que realice a través de Terraform se encuentran en la suscripción de Azure mostrada. Si es lo que desea, omita el resto de este artículo.
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.tfe inserte el siguiente código:terraform { required_providers { azapi = { source = "Azure/azapi" version = "~> 2.0" } azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } random = { source = "hashicorp/random" version = "~> 3.0" } } } provider "azurerm" { features {} } provider "azapi" {}Cree un archivo denominado
variables.tfe inserte el siguiente código:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value to create a unique name." } variable "storage_account_name_prefix" { type = string default = "st" description = "Prefix of the storage account name that's combined with a random value to create a unique name." }Cree un archivo denominado
main.tfe inserte el siguiente código:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "storage_suffix" { length = 8 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } resource "azurerm_storage_account" "example" { name = "${var.storage_account_name_prefix}${random_string.storage_suffix.result}" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azapi_resource_action" "regenerate_key" { type = "Microsoft.Storage/storageAccounts@2023-01-01" resource_id = azurerm_storage_account.example.id action = "regenerateKey" method = "POST" body = { keyName = "key1" } }Puntos clave sobre el uso
azapi_resource_actioncomo un recurso:- El
actioncampo especifica la operación de ARM que se va a realizar. Para la rotación de claves de la cuenta de almacenamiento, useregenerateKey. - El
methodcampo especifica el método HTTP. La mayoría de las acciones imperativas usanPOST. - El
bodyatributo pasa datos a la acción. Para la regeneración de claves, especifique cuál clave (key1okey2) desea rotar. - La acción se realiza durante
terraform applyy su estado se sigue en Terraform.
- El
Cree un archivo denominado
outputs.tfe inserte el siguiente código:output "resource_group_name" { value = azurerm_resource_group.example.name } output "storage_account_name" { value = azurerm_storage_account.example.name }
Ejecute terraform init para inicializar la implementación de Terraform. Este comando descarga el proveedor de Azure necesario para administrar los recursos de Azure.
terraform init -upgrade
Puntos clave:
- El parámetro
-upgradeactualiza los complementos de proveedor necesarios a la versión más reciente que cumpla con las restricciones de versión de la configuración.
Ejecute terraform plan para crear un plan de ejecución.
terraform plan -out main.tfplan
Puntos clave:
- El comando
terraform plancrea 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 opcional
-outpermite especificar un archivo de salida para el plan. El uso del parámetro-outgarantiza que el plan que ha revisado es exactamente lo que se aplica.
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 applyde ejemplo asume que ejecutóterraform plan -out main.tfplanpreviamente. - 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 applysin ningún parámetro.
Comprobación de los resultados
Después de completarse terraform apply, se ha rotado la clave de la cuenta de almacenamiento. Puede comprobar la rotación de claves comprobando las claves de la cuenta de almacenamiento en Azure.
Ejecute az storage account keys list para ver las claves de la cuenta de almacenamiento.
az storage account keys list \
--resource-group <resource_group_name> \
--account-name <storage_account_name>
El value campo muestra la clave actual.
Ejemplos de otras acciones de recursos
El recurso azapi_resource_action funciona con muchas operaciones de Azure. Estos son ejemplos comunes:
-
Virtual Machines:
deallocate,start,restart,powerOff,reimage -
Almacenes de Claves:
purge(para almacenes eliminados temporalmente),rotate(para claves administradas) -
App Services:
swap(para ranuras de implementación),restart -
Bases de datos:
failover,promote - Compute resources: cualquier operación expuesta por la API rest de Azure que modifica el estado sin crear ni destruir un recurso
Limpieza de recursos
Cuando ya no necesite los recursos creados a través de Terraform, siga estos pasos:
Ejecute terraform plan y especifique el indicador
destroy.terraform plan -destroy -out main.destroy.tfplanPuntos clave:
- El comando
terraform plancrea 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 opcional
-outpermite especificar un archivo de salida para el plan. El uso del parámetro-outgarantiza 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