Funcionamiento de Azure Export para Terraform

En este artículo se presenta azure Export para flujos de trabajo de Terraform . En este artículo, obtendrá información sobre las instrucciones de procedimientos recomendados de la herramienta, las limitaciones actuales y cómo mitigar esas limitaciones.

Modo interactivo

De forma predeterminada, Azure Export para Terraform se ejecuta en modo interactivo. Cuando se ejecuta en modo interactivo, los métodos abreviados de teclado disponibles se muestran en la parte inferior de la pantalla.

Tarea Métodos abreviados de teclado
Navegación
Seleccione el elemento anterior en la lista de recursos. ^ -o- k
Seleccione el elemento siguiente en la lista de recursos. -o- j
Vaya a la página anterior de la lista de recursos. ← -o- h -o- Página arriba
Vaya a la página siguiente de la lista de recursos. → -o- l -o- Página abajo
Vaya al inicio de la lista de recursos. g -o- Inicio
Vaya al final de la lista de recursos. G -o- End
Selección de recursos para omitir
Omitir recurso (o desskip si está marcado como "Omitir") Eliminar
Operaciones de filtro
Defina un filtro por texto en la lista de recursos. /
Borrar cualquier filtro actual Esc
Guardar operaciones
Guarde un archivo de asignación de la lista de recursos. El archivo de salida se ve afectado por la omisión (pero no el filtrado). s
Exporte los recursos al estado (si --hcl-only no se especifica) y genera la configuración. t
Experiencia del usuario
Mostrar recomendaciones para el recurso actual. r
Mostrar errores de exportación de recursos (si los hay). e
Mostrar ayuda. ?
Dejar
Salir del modo interactivo. t

Para cada recurso, Azure Export para Terraform intenta reconocer el tipo de recurso de Terraform correspondiente. Si encuentra una coincidencia, la línea se marca con el indicador siguiente: 💡.

Si el recurso no se puede resolver, debe escribir la dirección del recurso de Terraform de la siguiente forma: <resource type>.<resource name>. Por ejemplo, azurerm_linux_virtual_machine.test hace referencia a un tipo de recurso de Terraform de azurerm_linux_virtual_machine mientras que hace test referencia al nombre de la máquina virtual usada en los archivos de configuración.

Para ver los tipos de recursos disponibles para el recurso seleccionado, presione r.

En algunos casos, hay recursos de Azure que no tienen recursos de Terraform correspondientes, como si el recurso carece de compatibilidad con Terraform. Algunos recursos también se pueden crear como efecto secundario del aprovisionamiento de otro recurso, como el recurso disco del sistema operativo que se crea al aprovisionar una máquina virtual. En estos casos, puede omitir los recursos sin asignar nada.

Después de pasar por todos los recursos que se van a importar, presione w para empezar a generar la configuración de Terraform y (si --hcl-only no está seleccionada) importando al estado de Terraform.

Modo no interactivo

De forma predeterminada, Azure Export para Terraform se ejecuta en modo interactivo. Para especificar que la herramienta debe ejecutarse en modo no interactivo, especifique la --non-interactive marca .

aztfexport [command] --non-interactive <scope>

Importante

Si el directorio en el que ejecuta Azure Export para Terraform no está vacío, debe agregar la --overwrite marca para usar la --hcl-only marca .

Procedimientos recomendados para flujos de trabajo principales

En un nivel fundamental, cualquier usuario de Azure Export se enfrenta a una decisión entre dos opciones:

Las siguientes subsecciones proporcionan instrucciones sobre qué opción se debe tomar en función del escenario.

Administración de la infraestructura

Es posible que no tenga que exportar al estado si no ha comprobado que los recursos configurados se comporten dentro de su entorno de la manera deseada.

Si está seguro de que desea administrar el conjunto de recursos de Terraform con terraform init plan apply flujos de trabajo, la exportación al estado es esencial.

Si aún no está seguro de que desea administrar los recursos, se recomienda pasar la --hcl-only marca.

Infraestructura existente

En escenarios en los que se va a exportar a entornos de Terraform existentes, puede resultar útil pensar como un equivalente de plan de Terraform, especialmente antes de --hcl-only anexarse a entornos existentes.

El terraform apply comando equivale a exportar recursos, durante el cual su configuración se vincula al estado preexistente. En este escenario, el uso de un archivo de asignación ahorra tiempo de ejecución para enumerar y asignar recursos.

Detección de la infraestructura

Si no está seguro de qué recursos existen en un entorno, puede comprobar si especifica la --generate-mapping-file marca . Para más información sobre este tema, consulte Exploración de la selección y nomenclatura de recursos personalizados mediante Azure Export para Terraform.

Limitaciones

Azure Export para Terraform es una herramienta compleja que intenta convertir la infraestructura de Azure en código y estado de Terraform. Sus limitaciones conocidas actuales se explican en las siguientes subsecciones.

Propiedades de solo escritura

Algunas propiedades de AzureRM son de solo escritura y no se incluyen en el código generado que crea Azure Export para Terraform. El problema se soluciona definiendo la propiedad después de exportar al código HCL.

Restricciones entre propiedades

El proveedor de AzureRM puede establecer dos propiedades que entran en conflicto entre sí. Cuando Azure Export para Terraform lee propiedades en conflicto, puede establecer ambas propiedades en el mismo valor a pesar de que el usuario solo configuró una. Surgen más complicaciones cuando existen varias restricciones entre propiedades dentro de la misma configuración generada. Debe saber dónde existen conflictos entre propiedades dentro de la configuración para mitigar este problema.

Infraestructura fuera del ámbito de recursos

Cuando se usa Azure Export para Terraform para los ámbitos de recursos de destino, es posible que existan recursos necesarios para la configuración fuera del ámbito especificado. Un ejemplo es una asignación de roles. El usuario debe identificar los recursos que están fuera del ámbito.

Propiedades de solo escritura

Azure Export no puede generar propiedades de solo escritura (como contraseñas) dentro de su configuración. Debe conocer las propiedades de solo escritura y definirlas en una configuración para crear nuevos conjuntos de recursos.

Modificación del código para que coincida con los estándares de codificación

Hay algunas operaciones necesarias si el usuario desea modificar su código para cumplir los estándares de codificación. Estos pasos solo serían necesarios si el usuario planea usar el código en entornos que no son de la bandeja de entrada.

Recursos definidos por propiedades

Algunos recursos de Azure se pueden definir como una propiedad de un recurso primario de Terraform o un recurso de Terraform individual. Un ejemplo es una subred. Azure Export para Terraform define el recurso como un recurso individual, pero es recomendable que coincida con la configuración de codificación existente.

Dependencias explícitas

Azure Export para Terraform actualmente puede declarar solo dependencias explícitas. Debe conocer la asignación de las relaciones entre los recursos para refactorizar el código para incluir las dependencias implícitas necesarias.

Valores codificados

Azure Export para Terraform genera actualmente cadenas codificadas de forma rígida. Como procedimiento recomendado, debe refactorizar estos valores en variables. Además, cuando se usa la --full-properties marca para exponer todas las propiedades, se puede ver información confidencial (como secretos) en la configuración generada. Use prácticas recomendadas para proteger la visibilidad de este código.

Pasos siguientes