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差异。你能详细说明一下吗?