本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「診断設定がキレイに消えずにモヤモヤする #Azureリレー」を再編集したものです。
結論から書くと、
診断設定はリソースグループに紐づかないため、リソースグループの削除をしても診断設定は残り続ける、
です。
何が言いたいのか?
例えばTerraformでAzureリソースを構築し、診断設定も実施したとします。
ここで、「この環境作り直したいな」となった場合、terraform destroyすればいいのですが、Terraformを見守るのが辛いなどの理由でリソースグループの削除をしてtfstateファイルを捨ててから再度terraform applyをすると、診断設定の名前が重複してコケます。
これは、リソースグループの削除で診断設定の削除が行なわれないためです。
下記のissueに記載がありました。サブスクリプションに紐づいているみたいですね?
https://github.com/MicrosoftDocs/azure-docs/issues/67267
terraform destroyでリソース削除をすればいいんですが、検証で作った環境なんかはついついリソースグループ削除をしてしまい、ここでハマります…
やってしまった時の対応
terraformでリソースの作成と診断設定の追加を実装している場合、リソースに診断設定が関連づいた状態なので、リソースが作られた後に診断設定の作成で失敗しますよね?
terraformが失敗したらAzureポータルでリソースの設定を見に行って診断設定を削除し、terraformを再実行するのがひとつの手です。
結構地道ですね…
あとはaz monitor diagnostic-settings deleteを使うなど、CLIなどで頑張るくらいですかね。
まとめ
リソースを頻繁に作ったり消したりする場合、診断設定の扱いに注意しましょう。
失敗しても何とかなるので、ほどほどに対処したいところです。
松枝 宏樹/FIXER
名古屋事業所所属。
得意分野はC#、ASP.NET、terraformなど。
最近はdocker、K8s関連を勉強中。