Terraform выходные переменные, которые будут использоваться в качестве входных переменных - PullRequest
0 голосов
/ 30 марта 2020

Я хочу использовать выходные переменные одного ресурса / модуля в качестве входных данных для другого ресурса / модулей. Это возможно? Здесь я хочу, чтобы выходное значение из 'output.tf' в root использовалось в качестве ввода в 'main.tf' модуля.

    root
    |--main.tf
    |--vars.tf
    |--outputs.tf
    |---module
         |--main.tf
         |--vars.tf

1 Ответ

0 голосов
/ 31 марта 2020

Конечно можно. И больше ничего не нужно делать. Просто сделай это как обычно. Вот пример:

main.tf
├── rg
│   ├── output.tf
│   └── rg.tf
└── vnet
    ├── output.tf
    └── vnet.tf

Вы создаете модули rg и vnet, как это происходит. Установите выход, который вам нужен. Здесь я установил вывод rg_name и rg_location. И я также устанавливаю переменные rg_name и rg_location в модуле vnet по мере необходимости. Тогда main.rf показывает здесь:

provider "azurerm" {
  features {}
}

module "rg" {
  source = "./rg"

  rg_name = "charlesTerraform"
}

module "vnet" {
  source = "./vnet"

  rg_name = module.rg.rg_name
  rg_location = module.rg.rg_location
}

output "vnet" {
  value = module.vnet.vnet
}

Видите ли, я использую выход модуля rg в качестве входа для модуля vnet. Надеюсь, это поможет вам понять модули Terraform.

Обновление:

То же самое относится и к структуре, о которой вы говорили. Вам просто нужно ввести нужный вывод в модуль. Например:

resource "azurerm_resource_group" "example" {
  name = "xxxxxx"
  location = "xxxx"
}

module "vnet" {
  source = "./modules"

  resource_group = azurerm_resource_group.example.name
}

Это всего лишь пример, но он показывает, как этого добиться. Надеюсь, вы понимаете.

...