1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actions から Terraform destroy してみました

Posted at

概要

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 というファイルを新規作成します。

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」を確認します。
スクリーンショット 2022-09-13 1.38.40.png

「terraform-destory」を選択し、「Run workflow」を選択します。
スクリーンショット 2022-09-13 1.39.37.png

その後、「terraform destory」が実行され Terraform で作成された対象となる Azureリソースが削除されます。
スクリーンショット 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リソースが存在する場合の 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を試す

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?