7.4 进阶实战:使用 IaC 代码化管理你的 DevOps 流水线
1. 引言:流水线也是基础设施
传统 DevOps 中,CI/CD 流水线的配置散落在各个系统的 UI 界面中:
- Jenkins Job 配置在 Jenkins 界面
- GitHub Actions 配置在
.github/workflows/ - Argo CD Application 通过
kubectl apply手动创建
这种“配置漂移”问题同样存在于 CI/CD 系统本身。
解决方案:用IaC(Infrastructure as Code)的方式管理 CI/CD 流水线,让流水线的创建、修改、删除都通过代码完成。
2. Terraform 管理 Jenkins
2.1 场景
公司有 50 个微服务,每个服务都需要一个 Jenkins Pipeline。手动创建 50 个 Job 太繁琐,且容易出错。
2.2 使用 Terraform Jenkins Provider
安装 Provider:
terraform { required_providers { jenkins = { source = "taiidani/jenkins" version = "~> 0.9.0" } } } provider "jenkins" { server_url = "https://jenkins.example.com" username = var.jenkins_username password = var.jenkins_password }创建 Pipeline Job:
resource "jenkins_job" "payment_service" { name = "payment-service-pipeline" template = templatefile("${path.module}/jenkinsfile.tpl", { se