两个AWS帐户的TerraForm结构 [英] Terraform structure for two aws accounts
本文介绍了两个AWS帐户的TerraForm结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
|---- 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
以下是我使用的一些代码:
MODULES/Provider.tf
provider "aws" {
region = "${var.aws_region}"
}
模块/vpc.tf
resource "aws_vpc" "vpc" {
cidr_block = "${var.vpc_cidr_block}"
instance_tenancy = "default"
}
dev_count/main.tf:
module "create_infra" {
source = "../modules"
aws_region = "${var.aws_region}"
vpc_cidr_block = "${var.vpc_cidr_block}"
}
如上所述,我将从main.tf文件创建更多的模块,如子网和调用。
dev_count/ariables.tf
variable "aws_region" {}
variable "vpc_cidr_block" {}
dev_count/terraform.tfvars
aws_region = "us-west-1"
vpc_cidr_block = "10.10.10.0/8"
这是正确的方法吗?有没有更好的方法来做这件事? Dev_count下的main.tf文件似乎不正确,如果我有10个或更多的资源,管理会变得困难。
推荐答案
我建议使用下面的文件夹结构,这将有助于对所有环境使用相同的main.tf
Terraform代码,从而避免在所有env文件夹中复制相同的代码。
我正在我当前的实现中使用它,它真的很有帮助,要使用此模式,您需要为每个模块添加开关功能,以便基于变量terraform可以根据环境需要跳过特定模块。
|---- README.md
|---- deployment
|---- main.tf
|---- variables.tf
|---- environments
|---- dev
|---- backend.tfvar
|---- variables.tfvar
|---- prod
|---- backend.tfvar
|---- variables.tfvar
|---- modules
|---- provider.tf
|---- vpc.tf
|---- variables.tf
初始化并应用下面的Terraform Use命令(cd到特定环境文件夹)
terraform init -var-file=variables.tfvar -backend-config=backend.tfvar ../../deployment/
terraform apply -var-file=variables.tfvar ../../deployment
这篇关于两个AWS帐户的TerraForm结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文