首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Terraform中,是否有一种为模块使用不同提供程序的方法?

在Terraform中,是否有一种为模块使用不同提供程序的方法?
EN

Stack Overflow用户
提问于 2020-09-20 05:48:36
回答 2查看 679关注 0票数 2

我使用https://github.com/cloudposse/terraform-aws-acm-request-certificate生成证书,使用terraform和aws。

有什么方法可以为模块使用不同的提供程序吗?

我的意思是,在第一个模块中,我想在我们-东-1区域做,另一个我想在我们-东-2做。

但是,由于我有一个提供程序,这可以在单一文件或单一目录中的terraform完成吗?

代码语言:javascript
复制
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"
}

类似于:

代码语言:javascript
复制
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"
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-20 06:07:26

基于地形记录,您可以创建不同的提供程序,并将它们“传递”给模块。

就您的情况而言,这可能是以下情况:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2020-09-20 05:51:45

下面的链接可能有助于解决您的目的。

多区域地形

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63975913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档