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

在互联网业务中,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'
}

相关推荐

  1. 自动部署SSL证书到阿里腾讯CDN

    2024-04-25 07:24:02       20 阅读
  2. 阿里CDN架构接入WAF应用防火墙案例实践

    2024-04-25 07:24:02       37 阅读
  3. 阿里国际版CDN查询实时带宽步骤

    2024-04-25 07:24:02       49 阅读
  4. terraform创建多台阿里ecs 命名问题

    2024-04-25 07:24:02       15 阅读
  5. terraform 阿里创建ECS使用user_data

    2024-04-25 07:24:02       12 阅读
  6. Terraform实战】如何从头自动起一个nginx实例

    2024-04-25 07:24:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 07:24:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 07:24:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 07:24:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 07:24:02       20 阅读

热门阅读

  1. Mac 上可以使用 ping 端口

    2024-04-25 07:24:02       17 阅读
  2. pnpm的安装与配置(Windows/macOS)

    2024-04-25 07:24:02       16 阅读
  3. Swift加载Lottie

    2024-04-25 07:24:02       16 阅读
  4. 基于Promise + XHR 封装myAxios函数

    2024-04-25 07:24:02       16 阅读
  5. Flutter 项目添加 IOS 小组件开发记录

    2024-04-25 07:24:02       13 阅读
  6. linux命令之printf

    2024-04-25 07:24:02       14 阅读
  7. TCP详解

    TCP详解

    2024-04-25 07:24:02      13 阅读
  8. 【Altium Designer-画板指南】

    2024-04-25 07:24:02       11 阅读
  9. 骑砍2霸主MOD开发(8)-action_sets.xml骨骼动画

    2024-04-25 07:24:02       13 阅读