Как запустить несколько модулей в одном файле в terraform?
Я использую
https://github.com/cloudposse/terraform-aws-acm-request-certificate
для создания сертификата с использованием terraform и aws.
Как запустить несколько доменов в одном файле в терраформе? (не субдомен)
Я пробую это, но у меня ошибка
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"
}
}
1 ответ
Решение
Прежде всего, вы используете одно и то же имя для обоих модулей. Они должны быть разными, например:
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"
}
См. Подробности в примечаниях к выпуску.