説明
Terraform モジュールを git::https://... 形式で取得し、?ref= で revision を指定しない場合、リモートリポジトリのデフォルトブランチが使われます。そのブランチの変更により、モジュールの新規インストールや更新時に以前と異なるコードを取得する可能性があります。
確認済みのモジュールバージョンを明示すると、変更の時期を管理しやすくなります。ブランチやタグの参照先は変更できるため、同じコードを再現するには確認済みの完全なコミットハッシュを指定してください。
想定される影響
- 予期しないモジュールの変更でインフラの動作が変わる可能性があります。
- デプロイ失敗の原因がモジュールの変更か、自分たちのコードの変更かを判断しにくくなります。
- 未確認の変更が本番環境に適用される可能性があります。
対処方法
Git モジュールのソースに ?ref= で確認済みの revision を指定してください。参照先を固定する必要がある場合は完全なコミットハッシュを使い、モジュールの更新はレビューとテストを経て適用してください。
例
Git モジュールの参照方法を比較する例です。example.com のアドレスは実際のモジュールリポジトリに置き換えてください。
変更前
hcl
module "network" {
source = "git::https://example.com/terraform-modules/network.git"
}
変更後
hcl
module "network" {
source = "git::https://example.com/terraform-modules/network.git?ref=v1.4.2"
}
変更後の例は v1.4.2 タグを選択しています。タグの参照先が移動すると取得するコードも変わるため、この設定だけでは不変性は保証されません。