在Terraform Azurerm模板部署后获取数据

时间:2019-07-23 13:44:02

标签: terraform azure-resource-manager terraform-provider-azure

我正在用terraform部署我的基础设施,但是对于AKS,我使用ARM模板化,因为它具有TF中还没有的某些功能。 因此,在我的tf模板中,我定义了以下资源来部署ARM模板:

resource "azurerm_template_deployment" "k8s" {
  name                  = "${var.environment}-aks-deployment"
  resource_group_name   = "${azurerm_resource_group.kubernetes.name}"

  parameters              = {
    workspaceResourceId = "${azurerm_log_analytics_workspace.k8s-law.id}"
    aksClusterName      = "fntm-k8s-${var.environment}"
    subnetKubernetes    = "${azurerm_subnet.kubernetes.id}"
    servicePrincipal    = "${azuread_service_principal.k8s_sp.application_id}"
    clientSecret        = "${random_string.sp_password.result}"
    clientAppID         = "${var.clientAppID}"
    serverAppID         = "${var.serverAppID}"
    tenantID            = "${var.tenant_id}"
    serverAppSecret     = "${var.serverAppSecret}"
  }

  template_body         = "${file("kubernetes/azuredeploy.json")}"

    deployment_mode = "Incremental"
}

集群的部署进行得很好,但是之后,我需要从AKS集群中获取数据,该数据将由其他模块使用。 如果我将数据资源用于AKS,则它将尝试在部署集群数据之前获取集群数据。所以下面的部分不起作用。

data "azurerm_kubernetes_cluster" "kubernetes" {
  name                = "fntm-k8s-${var.environment}"
  resource_group_name = "${azurerm_resource_group.kubernetes.name}"
}

我认为可能是一个depends_on,但这在数据资源中不受支持。

也许有人知道如何从具有输出的AKS集群中获取数据属性node_resource_group吗?或其他任何想法/解决方案?

output "k8s_resource_group" {
  value = "${lookup(azurerm_template_deployment.k8s.outputs, "?????")}"
}

1 个答案:

答案 0 :(得分:0)

在您的azuredeploy.json中,将其用作输出:

"outputs": {
    "aksClusterName": {
        "type": "string",
        "value": "[parameters('aksClusterName')]"
    }
}

在您的tf文件中使用:

output "aksClusterName" {
  value = "${azurerm_template_deployment.k8s.outputs["aksClusterName"]}"
}

data "azurerm_kubernetes_cluster" "kubernetes" {
  name                = ""
  resource_group_name = "${azurerm_resource_group.kubernetes.name}"
}

output "k8s_resource_group" {
  value = "${data.azurerm_kubernetes_cluster.kubernetes.node_resource_group}"
}