Попросили ввести значения для переменных, установленных в модуле terraform, используя terragrunt
У меня есть проект Terragrunt со следующей структурой:
|---terraform.tfvars
|---account
| |---us-east-1
| |---nonprod
| |---s3
| |---terraform.tfvars
|---modules
| |---s3
| |---main.tf
|---source
|---s3
|---main.tf
|---provider.tf
|---vars.tf
/account/us-east-1/nonprod/s3/terraform.tvars
terragrunt = {
terraform {
source = "../../../../modules/s3"
}
include {
path = "${find_in_parent_folders()}"
}
}
/modules/s3/main.tf
module "s3" {
source = "../../source/s3"
app-name = "example-app"
aws-region = "us-east-1"
bucket-name = "example-app-bucket"
}
/source/s3/main.tf
resource "aws_s3_bucket" "s3" {
region = "${var.aws-region}"
bucket = "${var.bucket-name}"
acl = "private"
force_destroy = "true"
tags {
Name = "${var.app-name}"
}
}
Когда я бегу террагрантом из account
каталог:
$ terragrunt plan-all --terragrunt-source ../../../../source
Меня просят ввести значения для переменных, которые я установил в /modules/s3/main.tf
var.app-name
Enter a value:
Тем не менее, когда я бегу terraform plan
от modules/s3
каталог, похоже на работу.
Что не так с этой настройкой при использовании террагрунта?
1 ответ
Я считаю, что путаница, которая приводит к проблеме, заключается в наименовании вещей. т.е. source/s3
действительно модуль TF, в то время как modules/s3
код TF, который вызывает (использует) модуль.
terragrunt
ожидает найти источник модуля в конфигурации, а не код TF, который вызывает модуль.
Попробуйте это в terraform.tfvars
:
terragrunt = {
terraform {
source = "../../../../source/s3"
}
# ... other code & configs ...
}
НТН!