
OpenTacoでTerraformリソースを削除してみた
Pull Requestのコメント上では、digger planとdigger applyが実行可能です。(それぞれ、terraform plan terraform apply相当のコマンド)
terraform destroy相当のコマンドは実行できません。
リソースを削除したいときは、ローカルでterraform destroyを実行するなどOpenTaco以外の手段を使う必要があります。
他に良い方法がないか探していたところ、公式ドキュメントに以下の記載がありました。
terraform destroy用のGitHub Actionsワークフローを作成する方法です。
今回はこちらを試してみます。
リソース削除用GitHub Actionsワークフローファイルの作成
GitHubリポジトリに以下のGitHub Actionsワークフローファイルを作成します。
name: Digger Destroy
on:
workflow_dispatch:
inputs:
project:
description: 'Digger project to perform destroy on'
required: true
jobs:
destroy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: digger destroy
uses: diggerhq/digger@vLatest
with:
mode: manual
command: "digger destroy"
project: "${{ inputs.project }}"
setup-terraform: true
setup-aws: true
aws-role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
no-backend: true
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
workflow_dispatchで手動実行をトリガーにしています。
inputsでOpenTacoのプロジェクト名を受け取る形にしています。
以下の設定の場合、productionの部分がプロジェクト名になります。
projects:
- name: production
dir: prod
OpenTaco経由でのリソース削除には、digger destroyコマンドを使います。
引数にプロジェクト名を渡すことで、プロジェクト単位でリソース削除が行われます。
手動トリガーを設定しており、OpenTacoからトリガーすることがないワークフローのため、no-backend: trueを設定しています。
no-backend: trueについては以下で補足しています。
動作確認: リソース削除
実際にワークフローを実行してリソース削除をやってみます。
リソース削除用のワークフローを選択します。
Run workflow -> <プロジェクト名を入力> -> Run workflowを選択します。

ワークフローのログからterraform destroyが実行されリソースが削除されたことが確認できました。

おわりに
OpenTacoを使ったTerraformリソースの削除方法についてでした。
Pull Requestのコメントではdigger destroyが実行できないため、GitHub Actionsワークフローで解決するアプローチを試しました。
GitHub Actionsを実行するユーザーを制御することで、リソース削除できるユーザーを制御可能です。
ワークフローの実行権限を適切に設定することで、安全なリソース削除運用が実現できますね。
参考







