我正在使用Terraform在Azure上部署一个三层应用程序:前端,后端和数据库。它运作良好。 该应用程序是一种产品,我需要几个客户的多个实例。
我的问题是,我很难理解将多个值集(variables.tf)应用于同一脚本,以便获得多个环境。
我希望具有以下结构:
然后选择部署customer1还是customer2。我阅读了有关terraform工作空间的文章,并开始为每个客户创建一个工作空间。但是我不明白如何根据工作区为相同的脚本应用不同的值集。在网上很难找到一个完整的例子,我想做的应该是terraform的面包和黄油。
谢谢!
答案 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