【发布时间】:2022-05-15 23:12:21
【问题描述】:
我继承了一个 terraform 项目,该项目设置为部署到 AWS 上的 Elastic Container Service。
到目前为止,我非常喜欢使用它,并且尽管对 terraform 还很陌生,但我还是设法改变了一些东西。
我们的项目使用 terragrunt 来调整环境,我之前对文件进行了更改以添加特定于环境的设置,并且效果很好。
但是,我尝试添加一个全新的闪亮模块并且... terragrunt 讨厌它。
这是我尝试添加的代码:
terraform {
source = "${path_relative_from_include()}/../modules//auto_scaling"
}
dependency "analytics_cluster" {
config_path = "../analytics_cluster"
}
dependency "analytics_app" {
config_path = "../analytics_app"
}
include {
path = find_in_parent_folders()
}
inputs = {
ecs_cluster_name = dependency.analytics_cluster.outputs.name
ecs_app_service_name = dependency.analytics_app.outputs.app_service_name
ecs_sidecar_service_name = dependency.analytics_app.outputs.sidecar_service_name
}
dependencies {
paths = [
"../analytics_cluster",
"../analytics_app",
]
}
我得到的错误是:
terragrunt.hcl:19,62-79: Unsupported attribute; This object does not have an attribute named "app_service_name"., and 1 other diagnostic(s)
这是我添加到我已设置依赖关系的模块的输出中的变量。
这是输出的样子:
# output "service_name" {
# value = module.analytics_app.service_name
# }
output "app_service_name" {
value = module.analytics_app.app_service
}
output "sidecar_service_name" {
value = module.analytics_app.sidecar_service
}
最奇怪的是,如果我将 .hcl 文件更改为注释掉的输出,如下所示:
inputs = {
ecs_cluster_name = dependency.analytics_cluster.outputs.name
ecs_app_service_name = dependency.analytics_app.outputs.service_name
}
那么这是一个有效的输入,尽管 service_name 现在已被注释掉。
为什么没有拾取新的输出变量?为什么我删除的旧变量仍然存在?
【问题讨论】:
标签: terraform terragrunt