概要
GitHub Actions を利用した Terraform による Azureリソースの作成・更新を この記事 や この記事にまとめています。これら作成したリソースの terraform destory による削除を問題なくできるようにしてみました。
実行環境
macOS Monterey 12.3.1
python 3.8.12
Azure CLI 2.34.1
事前準備
- この記事にあるように、リポジトリと Github Actions の環境が準備されていてAzureのリソースが作成されていること
必要なコード
GitHub Actions には workflow_dispatch というものがあり、これを利用することで手動で terraform destory を実行する事ができます。
workflow_dispatch コード
.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 に push します。
git add .
git commit -m "workflow_dispatch commit"
git push -u origin main
workflow_dispatch の実行
Github画面において、新たな Actions の workflow として「terraform-destory」を確認します。
「terraform-destory」を選択し、「Run workflow」を選択します。
その後、「terraform destory」が実行され Terraform で作成された対象となる Azureリソースが削除されます。
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リソースが存在する場合の Length は 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 の workflow を手動実行することにより terraform destory で削除できることを確認できました。
参考記事
以下の記事を参考にさせていただきました。感謝申し上げます
TerraformをGitHubActionsを使ってCI/CDを試す