无需HashiCorp工作区,如何手动触发Github Actions销毁Terraform AWS资源
手动触发GitHub Action执行Terraform资源销毁的实现方案
可以实现无代码提交、无PR的手动触发,核心是给工作流配置workflow_dispatch触发事件,全流程完全依托GitHub Actions运行,不需要HashiCorp云工作区。
具体实现步骤
- 第一步:在你的仓库
.github/workflows/目录下创建工作流配置文件,比如命名为terraform-destroy.yml,配置示例如下:
name: Terraform Destroy Infrastructure # 仅配置手动触发,不需要其他触发条件 on: workflow_dispatch: # 可选:添加输入参数适配多环境场景 inputs: environment: description: '要销毁的部署环境' required: true default: 'prod' type: choice options: - dev - test - prod permissions: contents: read # 如果你用AWS OIDC认证需要配这个权限,用AKSK的话可以删掉 id-token: write jobs: destroy: runs-on: ubuntu-latest environment: ${{ github.event.inputs.environment }} steps: - name: 检出仓库代码 uses: actions/checkout@v4 - name: 配置AWS访问凭证 uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::你的AWS账号ID:role/你的OIDC角色名 aws-region: 你的AWS区域 # 如果不用OIDC,直接配置这里的密钥,存在GitHub Secrets里即可: # aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} # aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: 执行Terraform销毁 uses: dflook/terraform-destroy@v1 with: path: ./terraform # 替换为你仓库里Terraform配置文件的目录 var_file: ./terraform/envs/${{ github.event.inputs.environment }}.tfvars # 替换为你的变量文件路径
- 第二步:把这个工作流文件推送到你仓库的默认分支(比如main/master),仅需要推送这一次代码,后续销毁操作不需要任何代码提交。
- 第三步:手动触发销毁的操作路径:
- 打开你的GitHub仓库页面,点击顶部「Actions」标签
- 在左侧工作流列表里找到刚才创建的「Terraform Destroy Infrastructure」工作流
- 点击右侧的「Run workflow」按钮,选择要运行的分支、要销毁的环境,点击「Run workflow」确认即可触发销毁流程
可选优化建议
- 可以给对应环境配置GitHub Environment保护规则,开启「Required reviewers」选项,销毁工作流触发后需要指定的审批人确认才会执行实际销毁操作,避免误删资源
- 可以在工作流里加
terraform plan的前置步骤,先输出销毁计划,确认计划符合预期后再执行实际销毁 - 确保工作流使用的AWS凭证和你之前执行apply时的凭证权限一致,避免出现权限不足无法销毁部分资源的问题
内容的提问来源于stack exchange,提问作者Vaulstein
相关产品推荐
相关产品推荐

