現象
CI/CDパイプラインで、Terraformの静的解析にTFLintを使っていた。
ある日突然、これまで問題なかった既存コード部分で急にエラーが出るようになった。
原因
TFLintのバージョンアップ(0.39.3->0.40.0)で、
- terraform_required_version
- terraform_required_providers
のチェックがデフォルトでEnableとなったこと。
Terraformコードが
├ backend
├ modules <- モジュールとして切り出し
└ hoge <- 実行用ディレクトリ。modulesを読み込んで利用。
のような構成となっており、version/providerの記述はhoge内のみだったため、
modules内のコードに対して、上記チェックがエラーになっていた。
解決策
バージョン固定すると、バグfixや有用な修正があっても入らなくなってしまうので、やりたくない。
以下の記述を追加し、当該チェック内容をDisableにすることで対応。
.tflint.hcl
rule "terraform_required_version" {
enabled = false
}
rule "terraform_required_providers" {
enabled = false
}
感想
モジュール化すると、同じ現象に遭遇する気がする。
Terraform的にモジュール化をおススメしないということはないと思うが、この変更はどういう意図なんだろう。