Terraformのリファクタリング用のブロック(moved, import, removed)をまとめて削除する

はじめに

Terraformのリファクタリングの機能として、movedimportremoved などのブロックが存在しますが、terraform applyを実行すると不要になることが多いです*1.tf ファイル上にそのまま残しておいてもterraform planやterraform applyをする上で障壁になるわけではないですが、数がそれなりに増えると煩わしさが一定あるため、まとめて削除するコマンドラインツールを書いてみました。

作ったもの

github.com

go install github.com/shmokmt/tfhk/cmd/tfhk@latest
❯ tfhk -recursive .
a/test.tf
b/test.tf
test.tf

terraform fmt みたいな感じで使えます。

合わせて読みたい

*1:https://developer.hashicorp.com/terraform/language/modules/develop/refactoring によると、古いアドレスを参照しているものがあると削除されてしまうため、moved blockは削除しないことを推奨しているらしいです。個人的には複雑な使い方をしてない限りはすぐ消しちゃっても良いかなと思っています。 https://github.com/hashicorp/terraform/blob/3b4964270f3d11ff73c95a9de1a4a5089e0ebe9a/internal/refactoring/move_validate.go moveのバリデーションでもある程度カバーしてくれてそうだし、大丈夫そうに見えるけど、どうなんでしょう。