Terraform выходные переменные в качестве входных данных - PullRequest
1 голос
/ 09 июля 2019

Я новичок в Terraform и пытаюсь обернуться вокруг использования выходных переменных. мы находимся на AKS, и я развертываю следующие ресурсы: группа ресурсов, рабочая область анализа журнала, Azure Kubernetes. Когда аналитика журнала развернута, я записываю идентификатор рабочей области в выходную переменную. Теперь, когда Terraform развертывает Kubernetes, ему нужно знать идентификатор рабочей области, как я могу передать выходное значение в addon_profile (последняя строка в коде ниже)?

Ошибка:

environment = "${log_analytics_workspace_id.value}"

A managed resource "log_analytics_workspace_id" "value" has not been declared in the root module.

Код:

resource "azurerm_resource_group" "test" {
  name     = "${var.log}"
  location = "${var.location}" 
}

resource "azurerm_log_analytics_workspace" "test" {
  name                = "${var.logname}"
  location            = "${azurerm_resource_group.loganalytics.location}"
  resource_group_name = "${azurerm_resource_group.loganalytics.name}"
  sku                 = "PerGB2018"
  retention_in_days   = 30
}

**output "log_analytics_workspace_id" {
  value = "${azurerm_log_analytics_workspace.test.workspace_id}"
}** 

....................................................

addon_profile {
      oms_agent {
        enabled                    = true
        **log_analytics_workspace_id = "${log_analytics_workspace_id.value}"**
      }
}

1 Ответ

1 голос
/ 09 июля 2019

Выходные значения Terraform подобны "возвращаемым значениям" модуля.Чтобы объявить и использовать выходное значение log_analytics_workspace_id, вам потребуется поместить весь код для создания группы ресурсов, рабочей области аналитики журнала и инфраструктуры Azure Kubernetes в один модуль Terraform, а затем сослаться на выходное значениеснаружи модуля:

# declare your module here, which contains creation code for all your Azure infrastructure + the output variable
module "azure_analytics" {
  source = "git::ssh://git@github.com..."
}

# now, you can reference the output variable in your addon_profile from outside the module:
addon_profile {
      oms_agent {
        enabled                    = true
        log_analytics_workspace_id = "${module.azure_analytics.log_analytics_workspace_id}"
      }
}

С другой стороны, если вы просто хотите использовать значение workspace_id из вашего azurerm_log_analytics_workspace в том же коде, просто укажите его как azurerm_log_analytics_workspace.test.workspace_id.

...