es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Importar valores de recursos de Azure a nuevos scripts de Terraform.

Estoy tratando de crear módulos separados (repositorios git) para crear varios recursos de Azure utilizando Terraform.
Por ejemplo, quiero crear el módulo-1 que creará el servicio AKS (Azure Kubernetes Service) y el grupo de nodos predeterminado. Quiero crear un módulo separado-2 que creará grupos de nodos de usuario. ¿Existe alguna forma de importar valores del módulo-1, como el ID del clúster AKS, el ID de la red, etc., simplemente proporcionando el nombre del clúster u otro identificador? Si uso ‘source’, tengo que proporcionar valores cada vez y los valores predeterminados no son siempre iguales para todos los clústeres. No quiero codificar los IDs en los archivos tf. Por supuesto, usaré el mismo archivo de estado.

Entonces, básicamente, en Terraform, ¿es posible obtener valores de otro recurso de Azure que se crea en Terraform?

Gracias,
Santosh

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible obtener valores de otro recurso de Azure creado en Terraform. Una forma de lograr esto es utilizando las fuentes de datos proporcionadas por el proveedor de Terraform para Azure. Estas fuentes de datos te permiten consultar recursos existentes de Azure, recuperar su información y utilizarla en tu configuración de Terraform.

    Por ejemplo, en tu escenario, puedes crear una fuente de datos para el clúster AKS creado por el módulo-1 y utilizarlo en el módulo-2 para obtener la información necesaria, como el ID del clúster y el ID de la red. La fuente de datos se puede definir en la configuración del módulo-2 de la siguiente manera:

    data "azurerm_kubernetes_cluster" "aks" {
      name                = "mi-clúster-aks"
      resource_group_name = "mi-grupo-de-recursos-aks"
    }
    
    resource "azurerm_kubernetes_node_pool" "user" {
      # utiliza la fuente de datos para obtener el ID del clúster AKS y el ID de la red
      kubernetes_cluster_id = data.azurerm_kubernetes_cluster.aks.id
      vnet_subnet_id        = data.azurerm_kubernetes_cluster.aks.network_profile[0].subnet_id
      ...
    }
    

    En el ejemplo anterior, la fuente de datos azurerm_kubernetes_cluster consulta el clúster AKS creado por el módulo-1 con un nombre y grupo de recursos específicos, y recupera su ID y perfil de red. Estos valores luego se utilizan en el bloque de recurso azurerm_kubernetes_node_pool para crear grupos de nodos de usuario.

    Al utilizar fuentes de datos, puedes evitar codificar de forma estática los ID de los recursos u otros valores en tus configuraciones de Terraform y hacerlas más dinámicas y reutilizables en diferentes módulos.

Comments are closed.