今までアラートポリシーやカスタム指標などのStackdriverの設定をyamlやテキストで保存し、自作ツールで適用するようにしていましたが、自作ツールのメンテナンスが面倒になってきたのでterraformに移行することにしました。
移行にあたって、既存の設定ファイルは破棄し、terraformerを使って以下のように再作成しました。
1. 既存設定のインポート
PROJECT_ID="プロジェクトID" BUCKET="gs://バケット名" OUT="出力先ディレクトリ" terraformer import google --resources=monitoring -o $OUT -p '{output}' --state=bucket --bucket=$BUCKET --projects=$PROJECT_ID
※terraformer v0.7.8の場合、terraform v0.12への対応ができていない部分があるので以下を行う必要があります
- bucket.tfを修正
terraform 0.12upgrade
を実行
※slack通知はauth_token
がマスクされた状態だったので設定を削除し、terraform state rm
で管理から外しました
2. カスタム指標の作成
terraformer v0.7.8はカスタム指標に対応していないため、gcloudコマンドで取得した内容を .tf
に変換しました。
gcloud --project=$PROJECT_ID logging metrics list --format=json
このままだとterraform apply
時に新規作成しようとしてエラーになってしまうため、terraform import
でterraformの管理下に追加します。
3. 設定の適用
手元に一通りの設定が揃ったら適用します。
terraform fmt terraform validate terraform plan terraform apply
※必須フィールドが無い場合はterraform apply
時にエラーになるので個別に対応します