【发布时间】:2019-11-04 06:59:03
【问题描述】:
我有两个 AWS 账户,一个用于开发,另一个用于生产。我正在尝试在两个帐户中创建与 VPC、子网等相同的资源。通过阅读谷歌,我想出了以下结构:
|---- README.md
|---- dev_account
|---- main.tf
|---- terraform.tfvars
|---- variables.tf
|---- prod_account
|---- main.tf
|---- terraform.tfvars
|---- variables.tf
|---- modules
|---- provider.tf
|---- vpc.tf
|---- variables.tf
这是我正在使用的一些代码:
模块/provider.tf
provider "aws" {
region = "${var.aws_region}"
}
模块/vpc.tf
resource "aws_vpc" "vpc" {
cidr_block = "${var.vpc_cidr_block}"
instance_tenancy = "default"
}
dev_account/main.tf:
module "create_infra" {
source = "../modules"
aws_region = "${var.aws_region}"
vpc_cidr_block = "${var.vpc_cidr_block}"
}
与上面相同,我将创建更多模块,如子网并从 main.tf 文件调用。
dev_account/variables.tf
variable "aws_region" {}
variable "vpc_cidr_block" {}
dev_account/terraform.tfvars
aws_region = "us-west-1"
vpc_cidr_block = "10.10.10.0/8"
这是正确的方法吗?有没有更好的方法来做到这一点? dev_account 下的 main.tf 文件似乎不正确,因为如果我拥有 10 个或更多资源,它将变得难以管理。
【问题讨论】:
-
最佳实践是使用工作区和提供者别名。您是正确的,您的方法不会扩展并且最终变得难以维护。您的方法是人们如何在这些功能不可用的旧版本中解决 Terraform 中的这个问题。
标签: terraform terraform-provider-aws