如何在单个 AWS 账户中使用 Terraform 创建两个独立的环境(开发环境和生产环境)来部署 AWS 资源

问题描述 投票:0回答:1

如何在单个 AWS 账户中使用 Terraform 创建两个独立的环境(开发和生产)来部署 AWS 资源,以及管理多个数据管道的最佳方法是什么?

关键细节:

  • 我有一个 AWS 账户,想要设置两个不同的环境来使用 Terraform 部署资源。

  • 我使用 Bitbucket 进行版本控制,开发和生产有单独的分支。

部署资源时:

  • 对于开发环境,资源名称应带有

    *_dev
    后缀

  • 对于 prod 环境,资源名称应带有

    *_prod
    后缀

我需要构建大约 30 个具有以下特征的数据管道:

  • 来源: API 端点

  • 目标: S3 或 Redshift

问题:

在 Terraform 中构建此设置以在单个 AWS 账户中管理这两个环境的最佳方法是什么?

我应该使用单个存储库来构建所有 30 个数据管道,还是应该为每个管道创建单独的存储库?

这是我当前的想法:

    project-root/
    ├── environments/
    │ ├── dev/
    │ │ ├── main.tf
    │ │ ├── variables.tf
    │ │ ├── outputs.tf
    │ │ ├── terraform.tfvars
    │ │ └── backend.tf
    │ └── prod/
    │ ├── main.tf
    │ ├── variables.tf
    │ ├── outputs.tf
    │ ├── terraform.tfvars
    │ └── backend.tf
    ├── modules/
    │ ├── lambda/
    │ │ ├── main.tf
    │ │ ├── variables.tf
    │ │ └── outputs.tf
    │ ├── step_function/
    │ │ ├── main.tf
    │ │ ├── variables.tf
    │ │ └── outputs.tf
    │ ├── iam/
    │ │ ├── main.tf
    │ │ ├── variables.tf
    │ │ └── outputs.tf
    │ └── eventbridge/
    │ ├── main.tf
    │ ├── variables.tf
    │ └── outputs.tf
    ├── lambda/
    │ ├── lambda1/
    │ │ ├── main.py
    │ │ └── requirements.txt
    │ └── lambda2/
    │ ├── main.py
    │ └── requirements.txt
    ├── step_functions/
    │ └── sage_log_processing.json
    ├── bitbucket-pipelines.yml
    └── README.md
amazon-web-services terraform bitbucket
1个回答
0
投票

首先,没有“最好的方法”。除了一些一般规则之外,它还取决于首选的工作方式。

我强烈推荐 Nicki Watt 的演讲:使用 Terraform 发展您的基础设施https://www.youtube.com/watch?v=wgzgVm7Sqlk

简单总结一下:

  • 将 terraform 代码分离成可重用的模块,这些模块是 terraform 资源的集合。
  • 创建逻辑组件,它们是您创建的模块和可选的附加资源的组合。
  • 创建这些逻辑组件的特定于环境的配置。

关键是每个环境都有相同的代码,仅配置不同。 IE。您的情况中的 后缀

您当前的结构看起来已经非常类似于这种方法。

environments/*/main.tf
应仅使用具有最少配置的逻辑组件(例如
_dev
后缀)。
在不了解任何有关管道和逻辑的情况下,“数据管道”可能是逻辑组件。 因此,将数据管道拆分到一个存储库中是可行的。 每个存储库使用一个存储库会带来很大的复杂性。 这遵循 12 因素应用程序的第一条规则在修订控制中跟踪一个代码库,许多部署https://12factor.net/codebase 考虑将

dev

prod
环境分离到隔离的 VPC 中。 最佳实践是拥有独立的 AWS 账户:
https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html
我可以推荐的另一个演讲:

更多环境,更少代码:
    https://www.youtube.com/watch?v=Nr5Km_xGLVs
© www.soinside.com 2019 - 2024. All rights reserved.