例えば以下のような記述にして、マイナーバージョン自動アップグレードを有効にしているとき。
resource "aws_db_instance" "rds_contents_instance" { engine = "mysql" engine_version = "8.0.35" auto_minor_version_upgrade = "true" ... }
現在において実行すると、以下のように差分が出る。
# aws_db_instance.rds_contents_instance will be updated in-place ~ resource "aws_db_instance" "rds_contents_instance" { ~ engine_version = "8.0.40" -> "8.0.35" ... }
これは ignore_changes に engine_version を指定すれば雑に回避できるんだけど、それやるとメジャーバージョンを変更した時も気付かない可能性がある。 (自分で作業していたり PR 経由しているのを見ていれば気付くけど、分業制でそうじゃない場合など)
かといって MySQL のときに engine_version = "8.0" のようなパッチバージョンを明示せず latest なものを自動採用する、という動作があるのかはわからない。
なお、以下のモジュールの issue では PostgreSQL のバッチバージョンについては考慮されている、という記述を見つけた。
う〜ん悩ましい。
ちなみにセマンティックバージョニングに基づくと、マイナーバージョン自動アップグレードというのはなんか違和感が、と思っていたのだが、冷静に考えると MySQL のメジャーバージョンは 8.0 -> 8.4 -> 9.1 となんかそんな感じで、パッチバージョンに相当する箇所がマイナーバージョン管理に使われているのだった。
結局自動アップグレードはオフにして、バージョン固定で ENV ごとに確認とれたら手動で計画停止して更新、がマルいんすかねえ。