如何使用一个terraform脚本和不同的变量值管理几种不同环境的部署

时间:2019-03-20 09:17:05

标签: terraform devops

我正在使用Terraform在Azure上部署一个三层应用程序:前端,后端和数据库。它运作良好。 该应用程序是一种产品,我需要几个客户的多个实例。

我的问题是,我很难理解将多个值集(variables.tf)应用于同一脚本,以便获得多个环境。

我希望具有以下结构:

  • main.tf
  • customer1
    • variables.tf
  • customer2
    • variables.tf

然后选择部署customer1还是customer2。我阅读了有关terraform工作空间的文章,并开始为每个客户创建一个工作空间。但是我不明白如何根据工作区为相同的脚本应用不同的值集。在网上很难找到一个完整的例子,我想做的应该是terraform的面包和黄油。

谢谢!

1 个答案:

答案 0 :(得分:0)

正如您和@ydaetskcoR知道的机器人一样,工作空间是一种选择。如果它不适合您的业务。还有另一种方法适合您,我会在您的用例中推荐它。

Terragrunt是Terraform的薄包装,提供了用于处理多个Terraform模块的额外工具。

因此,在您的情况下,可以按以下结构轻松使用它来管理不同的客户。

└── customer1
    ├── prod
    │   ├── app
    │   │   └── terraform.tfvars
    │   ├── mysql
    │   │   └── terraform.tfvars
    │   └── vpc
    │       └── terraform.tfvars
    └── stage
        ├── app
        │   └── terraform.tfvars
        ├── mysql
        │   └── terraform.tfvars
        └── vpc
            └── terraform.tfvars
└── customer2
    ├── prod
    │   ├── app
    │   │   └── terraform.tfvars
    │   ├── mysql
    │   │   └── terraform.tfvars
    │   └── vpc
    │       └── terraform.tfvars
    └── stage
        ├── app
        │   └── terraform.tfvars
        ├── mysql
        │   └── terraform.tfvars
        └── vpc
            └── terraform.tfvars