在互联网业务中,CDN的应用已经成了普遍,SRE的日常需求中,CDN的刷新在前端需求逐渐中占了很大比例,并且比较琐碎。做为合格的SRE,把一切自动化是终极使命,而今天就分享通过Jenkins+Terraform实现阿里云的CDN自动刷新,给大家提供一个自动化思路。
整体的思路是,由运维创建.tf模板文件,放置在业务代码仓库中,由业务研发人员负责维护,运维辅助指导;改造当前Jenkins的Pipeline的流程,依照业务需求选择并行或者串行,然后研发在发布变更时,可通过修改代码中.tf相关的CDN路径参数,从而实现CDN的自动化刷新。

安装Terraform插件
Terraform配置文件
- provider "alicloud" {
- access_key = var.ALIYUN_ACCESS_KEY
- secret_key = var.ALIYUN_SECRET_KEY
- }
-
- resource "alicloud_cdn_purge_cache" "purge" {
- domain = var.cdn_domain
- paths = ["/*"]
- }
-
- variable "ALIYUN_ACCESS_KEY" {
- type = string
- default = ""
- }
-
- variable "ALIYUN_SECRET_KEY" {
- type = string
- default = ""
- }
-
- variable "cdn_domain" {
- type = string
- default = ""
- }
Jenkinsfile示例
- pipeline {
- agent any
- environment {
- TF_VAR_cdn_domain = 'your-cdn-domain.com'
- TF_VAR_access_key = credentials('ALIYUN_ACCESS_KEY')
- }
- stages {
- stage('Terraform Init') {
- steps {
- script {
- def terraform = docker.image('hashicorp/terraform:latest')
- terraform.inside {
- sh 'terraform init'
- }
- }
- }
- }
- stage('Terraform Plan and Apply') {
- steps {
- script {
- def terraform = docker.image('hashicorp/terraform:latest')
- terraform.inside {
- sh 'terraform plan -out=plan'
- sh 'terraform apply -auto-approve plan'
- }
- }
- }
- }
- }
- post {
- always {
- cleanup()
- }
- }
- }
-
- void cleanup() {
- // 执行Terraform destroy以清理资源,实际使用时可能需要根据实际情况调整
- sh 'terraform destroy -auto-approve'
- }