gpt4 book ai didi

amazon-web-services - 在 Terraform 中使用多个环境/变量

转载 作者:行者123 更新时间:2023-12-04 12:04:58 29 4
gpt4 key购买 nike

我们正在使用 terraform 在 AWS 中启动我们的基础设施,我们有 3 个独立的环境:Dev、Stage 和 Prod

开发:需要 - public、private1a、privatedb 和 privatedb2 子网
Stage & Prod:需要 - public、private_1a、private_1b、privatedb 和 privatedb2 子网

我有 main.tf、变量、dev.tfvars、stage.tfvars 和 prod.tfvars。我试图了解如何使用我目前用于开发环境的 main.tf 文件,并使用 .tfvars 文件创建阶段和产品所需的资源。

terraform 应用 -var-file=dev.tfvars

terraform apply -var-file=stage.tfvars (除了其他子网之外,这应该创建子网 private_1b)

terraform apply -var-file=prod.tfvars (除了其他子网之外,这应该创建子网 private_1b)

如果您需要进一步说明,请告诉我。

谢谢,

最佳答案

您正在尝试做的确实是正确的方法。您还必须使用 terraform workspaces .

Terraform starts with a single workspace named "default". This workspace is special both because it is the default and also because it cannot ever be deleted. If you've never explicitly used workspaces, then you've only ever worked on the "default" workspace.

Workspaces are managed with the terraform workspace set of commands. To create a new workspace and switch to it, you can use terraform workspace new; to switch environments you can use terraform workspace select; etc.



从本质上讲,这意味着您将拥有适合您拥有的每个环境的工作空间。

让我们看看一些例子。

我有以下文件:
  • 主文件
  • 变量.tf
  • dev.tfvars
  • 生产.tfvars

  • 主文件

    该文件包含 VPC 模块 9 可以是 c) 的任何资源。我们通过 var 调用变量。功能:
    module "vpc" {
    source = "modules/vpc"
    cidr_block = "${var.vpc_cidr_block}"
    subnets_private = "${var.vpc_subnets_private}"
    subnets_public = "${var.vpc_subnets_public}"
    }

    变量.tf

    该文件包含我们所有的变量。请不要我们不分配 默认 在这里,这将确保我们 100% 确定我们正在使用 .tfvars 文件中的变量。
    variable "vpc_cidr_block" {}

    variable "vpc_subnets_private" {
    type = "list"
    }

    variable "vpc_subnets_public" {
    type = "list"
    }

    基本上就是这样。我们的 .tfvars 文件将如下所示:

    dev.tfvars
    vpc_cidr_block = "10.40.0.0/16"
    vpc_subnets_private = ["10.40.0.0/19", "10.40.64.0/19", "10.40.128.0/19"]
    vpc_subnets_public = ["10.40.32.0/20", "10.40.96.0/20", "10.40.160.0/20"]

    生产.tfvars
    vpc_cidr_block = "10.30.0.0/16"
    vpc_subnets_private = ["10.30.0.0/19", "10.30.64.0/19", "10.30.128.0/19"]
    vpc_subnets_public = ["10.30.32.0/20", "10.30.96.0/20", "10.30.160.0/20"]

    如果我想为我的开发环境运行 terraform,这些是我将使用的命令(假设工作区已经创建,请参阅 Terraform workspace docs):
  • 选择开发环境:terraform workspace select dev
  • 运行计划以查看更改:terraform plan -var-file=dev.tfvars -out=plan.out
  • 应用更改:terraform apply plan.out

  • 您可以将其复制到任意数量的环境中。

    关于amazon-web-services - 在 Terraform 中使用多个环境/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146328/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com