我有一个具有以下结构的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时:
$ terragrunt plan-all --terragrunt-source ../../../../source
要求我输入我在/modules/s3/main.tf中设置的变量的值
var.app-name
Enter a value:
但是,当我从terraform plan
目录运行modules/s3
时,它似乎可以工作。
使用Terragrunt时此设置有什么问题?
答案 0 :(得分:0)
我认为,导致问题的混乱在于事物的命名。即source/s3
实际上是TF 模块,而modules/s3
是TF代码,调用(使用)模块。
terragrunt
希望在配置中找到模块源,而不是调用模块的TF代码。
在terraform.tfvars
中尝试一下:
terragrunt = {
terraform {
source = "../../../../source/s3"
}
# ... other code & configs ...
}
HTH!