我尝试通过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
确认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。