Terraformを手元で実行せず、GitHubとGitHub Actionsを利用してCI/CDを実現するためのテンプレートです。 terraformの実行にはOIDCを利用し、awsの認証を行うことで安全に実行基盤を整えられます。
tfstateはs3に保存され、dynamodbでロックをかけることで複数人でのtfstateの競合を防ぎます。
- mainからブランチを切る
- 必要なディレクトリを
terraform/aws
配下に作成 - tfファイルを追加
- GitHubでPRを作成
- planが実行され、結果がコメントされるので確認
- 問題なければマージ applyが実行されます
- applyが失敗するとPRにコメントが付きます。revertするなりで対応してください
この作業は手元で行う必要があります。
まずはawsをterraformから操作するためにアクセスキー、シークレットキーを設定します。
export AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID>
export AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY>
それぞれデプロイ
# s3, dynamodbのデプロイ
cd backend
terraform init
terraform apply --auto-approve
# iam, oidcのデプロイ
cd oidc
terraform init
terraform apply --auto-approve
terraform output
iam, oidcのデプロイ時にoutputで出力されるarnをGitHub Secretsに設定します。
Name | Value |
---|---|
AWS_ROLE_ARN | terraform output で出力されるarn |