我已经定义了以下Terraform模块:
module "lambda" {
source = "../lambda"
region = "us-west-1"
account = "${var.account}"
}
如何利用模块名称来通过插值设置source
参数?我希望像这样:
module "lambda" {
source = "../${this.name}"
region = "us-west-1"
account = "${var.account}"
}
答案 0 :(得分:1)
我认为不可能。有一个self
,允许您引用资源中的属性,但标识符不是属性。另外,self
仅在预配器中允许。
我想完成您想要的工作的唯一方法是模板.tf
文件,例如:
module {{ my-module}} {
source = "../{{ my-module }}"
region = "us-west-1"
account = "${var.account}"
但是您应该在计划和应用之前渲染模板。在CI管道中进行设置很简单,但是我发现在本地工作时很麻烦。
答案 1 :(得分:1)
locals {
module = basename(abspath(path.module))
}
{
...
some-id = local.module
...
}