我计划将远程后端用作Postgres,而不是将s3作为企业标准。
terraform {
backend "pg" {
conn_str = "postgres://user:pass@db.example.com/schema_name"
}
}
当使用postgres远程后端时,当我们运行terraform init时,我们必须提供特定于该terraform文件夹的架构,因为后端仅支持一个表,并且将使用工作空间名称创建新记录。
我现在陷入困境,因为我有50个项目,每个项目都有2层,分别保存在不同的文件夹中,那么我们需要在postgres中创建100个模式。同样,在自动配置中很难处理这么多模式。
我们可以处理类似于S3的东西吗?在S3中,我们为所有项目提供一个存储桶,并且在同一存储桶中有多个条目,每个条目都在每个Terraform脚本中指定了不同的键。我们能否基于每个terraform文件夹的后端配置中提供的键,对所有项目使用单一架构,对多个表/记录使用
答案 0 :(得分:0)
您可以使用单个数据库,pg 提供程序将自动创建一个指定的架构。
像这样:
terraform {
backend "pg" {
conn_str = "postgres://user:pass@db.example.com/terraform_backend"
schema = "fooapp"
}
}
这至少使项目保持独特。您也可以为其附加一个层,或使用 Terraform 工作区。
如果您在命令行上指定配置(也称为部分配置),作为 provider recommends,它可能更容易为您的用例动态设置:
terraform init \
-backend-config="conn_str=postgres://user:pass@db.example.com/terraform_backend" \
-backend-config="schema=fooapp-prod"
这在我与您类似的场景中效果很好。每个项目在共享数据库中都有一个唯一的架构,除了数据库的初始创建/配置之外,不需要任何任务 - 提供者按照指定创建 schema
。