我尝试通过GitHub Actions执行Terraform destroy

简介

我在这篇文章和这篇文章中总结了如何利用 GitHub Actions 以及 Terraform 在 Azure 上创建和更新资源。我还确保了可以顺利通过 terraform destroy 删除这些创建的资源。

执行环境

macOS Monterey 12.3.1 可提供的选项:

1. python 版本为 3.8.12
2. Azure CLI 版本为 2.34.1

事前准备

この記事にあるように、リポジトリと Github Actions の環境が準備されていてAzureのリソースが作成されていること


必要的代码 de

GitHub Actions提供了workflow_dispatch功能,通过使用它,可以手动执行terraform destroy操作。

工作流调度代码

我們會在.github/workflows下創建一個名為terraform_destroy.yml的新文件。

name: terraform-destroy
on:
  workflow_dispatch:

jobs:
  terraform:
    name: "Terraform-Destory"
    env:
      ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
      ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
      ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
      ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
      ARM_ACCESS_KEY: ${{ secrets.ARM_ACCESS_KEY }}
    runs-on: ubuntu-latest
    environment: production

    defaults:
      run:
        shell: bash

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: setup Terraform
      uses: hashicorp/setup-terraform@v1
      with:
        terraform_version: 1.0.11

    - name: Terraform Init
      run: terraform init

    - name: Terraform Destroy
      id: destroy
      run: terraform destroy -auto-approve

删除Azure资源

提交 git push

将在本地创建的 workflow_dispatch 定义文件“terraform-destroy.yml”推送到 GitHub。

git add .
git commit -m "workflow_dispatch commit"
git push -u origin main

执行 workflow_dispatch

スクリーンショット 2022-09-13 1.38.40.png
スクリーンショット 2022-09-13 1.39.37.png
スクリーンショット 2022-09-13 1.42.27.png

确认Azure资源

我們可以使用 Azure CLI 來檢查已刪除的 ResourceGroup。

$ az group show --name rg_ituru_github
(ResourceGroupNotFound) Resource group 'rg_ituru_github' could not be found.
Code: ResourceGroupNotFound
Message: Resource group 'rg_ituru_github' could not be found.

资源已经成功删除!

查看Terraform tfstate文件

使用Azure CLI,查看存储账户容器中的tfstate文件。如果存在Azure资源,长度为1080,但在资源删除后,我们将确认该值。

## コンテナー内の BLOB を一覧表示する
$ az storage blob list --account-name iturutfstate --container-name tfstate -o table
Name                                Blob Type    Blob Tier    Length    Content Type      Last Modified              Snapshot
----------------------------------  -----------  -----------  --------  ----------------  -------------------------  ----------
githubactions001                    BlockBlob    Hot                                      2022-09-12T14:34:57+00:00
githubactions001/terraform.tfstate  BlockBlob    Hot          156       application/json  2022-09-12T16:41:56+00:00

由于值的大幅减少,可以判断Azure资源信息不存在或已被删除。


总结

通过使用 GitHub Actions 结合 Terraform 在 Azure 上创建资源,我通过手动执行 GitHub Actions 的工作流程,确认可以使用 terraform destroy 删除这些资源。

请参考这篇文章。

我参考了以下文章,并表示感谢:
我使用GitHub Actions尝试了使用Terraform进行CI/CD。

广告
将在 10 秒后关闭
bannerAds