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.