#terraform #terraform-provider-aws
#terraform #terraform-provider-aws
Вопрос:
Я использую https://github.com/cloudposse/terraform-aws-acm-request-certificate сгенерировать сертификат с помощью terraform и aws.
Есть ли способ использовать другого поставщика для модуля?
Я имею в виду, что в первом модуле я хочу сделать это в регионе us-east-1, а в другом я хочу сделать это в us-east-2.
Но поскольку у меня один поставщик, это можно сделать с terraform в одном файле или в одном каталоге?
provider "aws" {
version = "~> 2.12.0"
profile = "..."
region = "us-east-1"
}
module "example_com" {
# Should be in us-east-1
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "example.com"
process_domain_validation_options = false
ttl = "300"
subject_alternative_names = ["*.example.com"]
}
module "cdn_example_com" {
# Should be in us-east-2
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "cdn.example.com"
process_domain_validation_options = false
ttl = "300"
}
Что-то вроде:
provider "aws" "aws-east-1" {
version = "~> 2.12.0"
profile = "..."
region = "us-east-1"
}
provider "aws" "aws-east-2" {
version = "~> 2.12.0"
profile = "..."
region = "us-east-2"
}
module "example_com" {
provider = "aws-east-1"
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "example.com"
process_domain_validation_options = false
ttl = "300"
subject_alternative_names = ["*.example.com"]
}
module "cdn_example_com" {
provider = "aws-east-2"
# Should be in us-east-2
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "cdn.example.com"
process_domain_validation_options = false
ttl = "300"
}
Ответ №1:
На основе документации terraform вы можете создавать разных поставщиков и «передавать» их модулям.
В вашем случае это может быть следующим:
provider "aws" {
version = "~> 2.12.0"
profile = "..."
region = "us-east-1"
}
# create second provider with alias of "us-east-2"
provider "aws" {
version = "~> 2.12.0"
profile = "..."
region = "us-east-2"
alias = "us-east-2"
}
#
# Then for your modules
#
# use default provider
module "example_com" {
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "example.com"
process_domain_validation_options = false
ttl = "300"
subject_alternative_names = ["*.example.com"]
}
# use non-default provider
module "cdn_example_com" {
providers = {
aws = aws.us-east-2
}
# Should be in us-east-2
source = "git::https://github.com/cloudposse/terraform-aws-acm-request-certificate.git?ref=master"
domain_name = "cdn.example.com"
process_domain_validation_options = false
ttl = "300"
}
Ответ №2:
Приведенная ниже ссылка может пригодиться для решения вашей цели