5

我已经定义了以下 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}"
}
4

2 回答 2

4

我认为是不可能的。有一个self允许您引用资源中的属性,但标识符不是属性。此外,self仅允许在配置程序中使用。

我想完成你想要的唯一方法是模板.tf文件,比如:

module {{ my-module}} {
  source                = "../{{ my-module }}"
  region                =  "us-west-1"
  account               = "${var.account}"

但是你应该在之前渲染模板terraform init。在 CI 管道中设置很简单,但在本地工作时我发现它很麻烦。

于 2018-10-03T13:08:20.010 回答
4
locals {
  module = basename(abspath(path.module))
}

{
...
  some-id = local.module
...
}
于 2020-10-25T09:23:40.970 回答