Uso de Azure Export para Terraform en escenarios avanzados
En este artículo se explica cómo realizar algunas de las tareas más avanzadas con Azure Export para Terraform.
- Anexe recursos a entornos de Terraform existentes.
- Exportación de recursos a un entorno de Terraform existente con un estado de back-end remoto
Anexar a los recursos existentes
De forma predeterminada, Azure Export para Terraform garantiza que el directorio de salida está vacío para evitar conflictos con los archivos de usuario existentes. Si necesita importar recursos a un archivo de estado existente, agregue la --append
marca .
aztfexport [command] --append <scope>
Cuando se especifica la --append
marca, Azure Export para Terraform comprueba si hay un bloque o terraform
existente provider
previamente en cualquiera de los archivos del directorio actual. Si no es así, la herramienta crea un archivo para cada bloque y, a continuación, continúa con la exportación. Si el directorio de salida tiene un archivo de estado, los recursos exportados se importan en el archivo de estado.
Además, el archivo generado tiene un .aztfexport
sufijo antes de la extensión , como main.aztfexport.tf
, para evitar posibles conflictos de nombres de archivo.
Si ejecuta aztfexport --append
varias veces, se crea un solo main.aztfexport.tf
con los resultados de exportación anexados al archivo cada vez que se ejecuta el comando.
Traiga su propia configuración de Terraform
De forma predeterminada, Azure Export para Terraform usa un back-end local para almacenar el archivo de estado. Sin embargo, también es posible usar un back-end remoto. Azure Export para Terraform le permite definir sus propios terraform
bloques o provider
para pasar.
Defina estos bloques en un .tf
archivo dentro del directorio de destino, exporte con la --append
marca y la configuración exporte a la versión de back-end y proveedor especificada (si se proporciona).
Importante
Si la versión especificada de AzureRM no coincide con la versión instalada al exportar, se produce un error en el comando.
Ejemplo de Azure Storage
Este ejemplo se basa en el artículo Store Terraform state in Azure Storage (Almacenar el estado de Terraform en Azure Storage).
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
backend "azurerm" {
resource_group_name = "tfstate"
storage_account_name = "storageacc"
container_name = "tfstate"
key = "terraform.tfstate"
}
}
provider "azurerm" {
features {}
}
Ejemplo de Terraform Cloud
terraform {
cloud {
organization = "aztfexport-test"
workspaces {
name = "aztfexport-playground"
}
}
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {
}
}
Experiencia insertada
Para exportar a un back-end insertado, use las --backend-type
opciones y --backend-config
. Para obtener más información sobre cómo configurar un back-end de Terraform, consulte Configuración de back-end de Terraform.
Con nuestro ejemplo de cuenta de almacenamiento de Azure, necesita lo siguiente como se define en la documentación del back-end de AzureRM.
- Definición de un nombre de grupo de recursos
- Nombre de la cuenta de almacenamiento
- Nombre del contenedor de almacenamiento
Pase estos parámetros al comando junto con el tipo de back-end:
aztfexport [subcommand] --backend-type=azurerm \
--backend-config=resource_group_name=<resource group name> \
--backend-config=storage_account_name=<account name> \
--backend-config=container_name=<container name> \
--backend-config=key=terraform.tfstate
Puntos clave:
- En el ejemplo anterior, estoy usando el carácter de continuación de línea Unix para que el código se muestre bien en el explorador. Es posible que tenga que cambiar estos caracteres para que coincidan con el entorno de la línea de comandos (como PowerShell) o combinar el comando en una línea.
- Si el estado de back-end ya existe, Azure Export para Terraform combina automáticamente los nuevos recursos con el estado existente. No es necesario especificar la
--append
opción insertada.
Exportación de recursos de Azure a un entorno de Terraform existente
Ahora, vamos a ponerlo todo juntos. Imagine que se han creado nuevos recursos fuera de Terraform que deben moverse a la administración de Terraform. Para completar la sección, asegúrese de que tiene un back-end configurado. En este tutorial se usa la misma configuración que se especifica en el tutorial de estado remoto de Azure Storage.
En el directorio primario de donde desea crear el directorio temporal, ejecute el siguiente comando:
aztfexport resource -o tempdir --hcl-only <resource_id>
Puntos clave:
- La
-o
marca especifica para crear el directorio si no existe. - La
--hcl-only
marca especifica que se exportan los recursos configurados a HCL.
- La
Después de inspeccionar que el recurso se puede anexar, use el archivo de asignación generado y la
--append
marca para asegurarse de que Azure Export respeta el estado remoto y las versiones de proveedor preexistentes dentro de nuestro entorno existente:aztfexport map --append `./tempdir/aztfexportResourceMapping.json`
Ejecute terraform init.
terraform init --upgrade
Ejecute el plan terraform.
Azure Export para Terraform debe mostrar No se necesitan cambios.
¡Enhorabuena! La infraestructura y su estado correspondiente se han anexado correctamente al entorno de Terraform.
Si el plan tiene problemas, consulte Conceptos de Azure Export para Terraform para comprender las limitaciones relacionadas con la implementación de código generado por --hcl-only
. Si ese artículo no le ayuda, abra un problema de GitHub.
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