Terraform, как передать переменные в модуль, используя файл переменных вместо повторяющегося вызова - PullRequest
0 голосов
/ 13 апреля 2020

Я передаю переменные нескольким модулям, используя код ниже. Мои вопросы, есть ли лучший способ сделать это? Возможно, файл, содержащий только переменные, которые я передаю каждому модулю, или файл, который можно вставить во время выполнения. Приведенный ниже код прекрасно работает с Azure DevOps Pipeline, просто пытаясь выяснить, существует ли более простой способ сделать то же самое с меньшим количеством строк кода.

Спасибо,

== ================================================== ==

module network {
    source = "./Network"
    prdrgname = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.name
    prdlocation = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.location
    drrgname = azurerm_resource_group.MYRG-AZ-WUS-BC-01.name
    drlocation = azurerm_resource_group.MYRG-AZ-WUS-BC-01.location
}

module compute {    
    source = "./Compute"
    prdrgname = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.name
    prdlocation = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.location
    drrgname = azurerm_resource_group.MYRG-AZ-WUS-BC-01.name
    drlocation = azurerm_resource_group.MYRG-AZ-WUS-BC-01.location
}

======================================= =====================

1 Ответ

0 голосов
/ 13 апреля 2020

Я не понимаю, откуда берется azurerm_resource_group, если бы вы могли поместить свой энтерли код. Но одна из лучших практик - это использовать файл .tfvars

, вам понадобится файл переменных вроде этого

variable "name"{}
variable "location"{}
variable "name2"{}
variable "location2"{}

и stage.tfvars или другое имя

name="value"
location="value"
name2="value"
location2="value"

ваш main.tf будет выглядеть так

module network {
    source = "./Network"
    prdrgname = var.name
    prdlocation = var.location
    drrgname = var.name2
    drlocation = var.location2
}

module compute {    
    source = "./Compute"
    prdrgname = var.name
    prdlocation = var.location
    drrgname = var.name2
    drlocation = var.location2
}

и, наконец, запустить ваш проект

terraform plan --var-file=stage.tfvars
...