Лучшим способом может быть использование TerraGrunt https://terragrunt.gruntwork.io/ от GruntWork, который представляет собой тонкую оболочку для Terraform, вы можете использовать файл конфигурации HCL для определения ваших требований.
Пример Конфигурация terragrunt.hcl:
terraform {
extra_arguments "conditional_vars" {
commands = [
"apply",
"plan",
"import",
"push",
"refresh"
]
required_var_files = [
"${get_parent_terragrunt_dir()}/terraform.tfvars"
]
optional_var_files = [
"${get_parent_terragrunt_dir()}/${get_env("TF_VAR_env", "dev")}.tfvars",
"${get_parent_terragrunt_dir()}/${get_env("TF_VAR_region", "us-east-1")}.tfvars",
"${get_terragrunt_dir()}/${get_env("TF_VAR_env", "dev")}.tfvars",
"${get_terragrunt_dir()}/${get_env("TF_VAR_region", "us-east-1")}.tfvars"
]
}
Вы можете передавать tfvars, также вы можете получить больше возможностей от terragrunt, лучше организовав свой макет Terraform, и использовать файл конфигурации для передачи tfvars из разных мест.