我使用https://github.com/cloudposse/terraform-aws-acm-request-certificate生成证书,使用terraform和aws。
如何在terraform中运行同一文件中的多个域?(非子域)
我尝试了一下,但出现了错误Error: Duplicate module call
module "acm_request_certificate" {
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "example.com"
process_domain_validation_options = true
ttl = "300"
}
module "acm_request_certificate" {
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "otherexample.com"
process_domain_validation_options = true
ttl = "300"
}我寻找的解决方案如下:
const domains = ["example.com", "otherexample.com"]
foreach(domain of domains) {
module "acm_request_certificate" {
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = domain
process_domain_validation_options = true
ttl = "300"
}
}发布于 2020-09-20 07:06:31
首先,您对两个模块使用相同的名称。它们应该是不同的,例如:
module "acm_request_certificate_example" {
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "otherexample.com"
process_domain_validation_options = true
ttl = "300"
}
module "acm_request_certificate_other_example" {
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "otherexample.com"
process_domain_validation_options = true
ttl = "300"
}此外,在terraform 0.13中,您可以使用foreach作为模块。
# my_buckets.tf
module "bucket" {
for_each = toset(["assets", "media"])
source = "./publish_bucket"
name = "${each.key}_bucket"
}请参阅release notes中的详细信息。
https://stackoverflow.com/questions/63971715
复制相似问题