Выходные переменные Terraform, которые будут использоваться в качестве входных переменных

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

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

2 ответа

Решение

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

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
}

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

Я думаю, вы можете использовать команду вывода terraform для интерполяции выходного значения в другие средства, такие как переменные.

См. эту документацию по terraform https://www.terraform.io/cli/commands/output

Другие вопросы по тегам