Terraform 在一个repo中保留项目源代码和脚本是否是一种不好的做法?

Terraform 在一个repo中保留项目源代码和脚本是否是一种不好的做法?,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我们有很多包含无服务器微服务的存储库,因此为每个存储库保留另一个存储库并不容易 . ├── azure-pipelines-prod.yml ├── README.md ├── src │ ├── Whoa.API │ ├── Whoa.Core │ ├── Whoa.Data │ ├── Whoa.Services │ └── Whoa.sln └── tf ├── dev.tfvars ├── main.tf ├── resources └

我们有很多包含无服务器微服务的存储库,因此为每个存储库保留另一个存储库并不容易

.
├── azure-pipelines-prod.yml
├── README.md
├── src
│   ├── Whoa.API
│   ├── Whoa.Core
│   ├── Whoa.Data
│   ├── Whoa.Services
│   └── Whoa.sln
└── tf
    ├── dev.tfvars
    ├── main.tf
    ├── resources
    └── variables.tf

7 directories, 6 files
这种方法在几个方面给我们带来了麻烦

  • 每次源代码发生变化时,我们的DevOps也会重新部署Terrafrom(这一点目前被一些奇特的git diff脚本所压制)
  • 发出拉取请求不像大多数项目在分支之间的delta中那样直观

我的问题是,使用Terrafrom和项目源管理单个存储库的常见做法是什么,它们不会遇到上述问题。

我建议您拆分IaC代码库和应用程序代码库。使用Terraform完全部署基础设施,不与应用程序代码库耦合,仅将CICD用于Infra,例如,
xyz iac Terraform
repo


然后使用另一个repo
xyz-app
对应用程序代码库使用它自己的CICD。

对于您提到的第一个问题,可以使用路径过滤器(),但是,我无法理解为什么分支会有您在第二个问题中提到的TF差异。你能详细说明一下吗?