Выходные переменные 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