/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

現在使用しているModuleのバージョンを調べる

先日、最新のModuleバージョンを調べる方法を記事にしましたが、「そもそも今使っているModuleバージョンっていくつなんだ?」というのがわからなかったのでその調べ方です。

ソースコードを確認する

ソースコード内でModuleのバージョンを指定しているようであれば、そこで確認が切るかと思います。

TerraformのベストプラクティスとしてもModuleバージョンは指定して使おうねってなっているので、大体の場合は指定してあるんじゃないかなと思いますので、そこをみればいいかと思います。

module "s3_bucket" {
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "3.13.0"  # バージョンを指定します。

  bucket = "my-s3-bucket"
  acl    = "private"

  tags = {
    Environment = "Dev"
    Name        = "My bucket"
  }
}

ファイルを直接確認する

ベストプラクティスに沿わず、バージョンが指定されていない場合もあるかと思います。その場合はterraform initした際に最新バージョンがダウンロードされてしまうので、基本的には最新となり、どのバージョンで過去に動いていたかはわからないと思います。(planの結果が残っていればわかる?)

ただ、.terraform/modules/modules.jsonが残っていたとしたら、そこにバージョン情報が載っていたりします。

{"Modules":[{"Key":"","Source":"","Dir":"."},{"Key":"s3_bucket","Source":"registry.terraform.io/terraform-aws-modules/s3-bucket/aws","Version":"3.14.0","Dir":".terraform/modules/s3_bucket"}]}%                                                        

これで確認できれば確認してみるのもありかと思います。

やはりベストプラクティスに沿っておくのが良い

Terraformのモジュールのバージョンを指定しておくことは、一般的に推奨されるベストプラクティスです。その理由は以下になります。

  • 再現性: モジュールバージョンを指定することで、異なる環境や時間での実行時に一貫性を保つことができます。これにより、意図しない変更や予期しないエラーを防ぐことができます。

  • 安定性: あるバージョンのモジュールがプロジェクトにおいて正しく機能することが確認された場合、そのバージョンを固定することで安定性を確保することができます。

  • 予測可能なアップグレード: 新しいバージョンのモジュールがリリースされた場合、そのバージョンに直ちにアップグレードするのではなく、バージョンを指定しておくことでアップグレードを計画的に行うことができます。これにより、新しいバージョンによる変更や影響を理解し、適切なテストを行うことが可能となります。

バージョンを指定しないと、Terraformはデフォルトで最新のバージョンのモジュールをダウンロードします。これは新機能を迅速に利用することが可能な一方で、上述のような問題を引き起こす可能性があるので、バージョン指定はベストプラクティスとして推奨されます。

ただし、バージョンを固定することで新しい機能やバグフィックスを適用するタイミングを見失わないように、定期的にモジュールのバージョンを確認し、必要に応じてアップグレードを行うようにすることも重要です。

まとめ

予想外にベストプラクティスの話まで発展してしまいました。

いい復習になりました。ではでは。