两个AWS帐户的TerraForm结构 [英] Terraform structure for two aws accounts

查看:9
本文介绍了两个AWS帐户的TerraForm结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个AWS帐户,一个用于dev,另一个用于prod。我正在尝试在两个账户中创建与私有网络、子网等相同的资源。通过在Google上阅读,我得出了以下结构:

|---- 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.tfTerraform代码,从而避免在所有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆