Jenkins集成Terraform实现阿里云CDN自动刷新

发布于:2024-04-28 ⋅ 阅读:(30) ⋅ 点赞:(0)

在互联网业务中,CDN的应用已经成了普遍,SRE的日常需求中,CDN的刷新在前端需求逐渐中占了很大比例,并且比较琐碎。做为合格的SRE,把一切自动化是终极使命,而今天就分享通过Jenkins+Terraform实现阿里云的CDN自动刷新,给大家提供一个自动化思路。

思路

整体的思路是,由运维创建.tf模板文件,放置在业务代码仓库中,由业务研发人员负责维护,运维辅助指导;改造当前Jenkins的Pipeline的流程,依照业务需求选择并行或者串行,然后研发在发布变更时,可通过修改代码中.tf相关的CDN路径参数,从而实现CDN的自动化刷新。

示意图

必备步骤

安装Terraform插件

  1. 登录Jenkins。
  2. 进入“管理Jenkins” > “插件管理”。
  3. 在“可选插件”中搜索“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'
}

网站公告

今日签到

点亮在社区的每一天
去签到