2022.05.24  

【Terraform】.terraform.lock.hclについて理解する

Terraform    

.terraform.lock.hclhashesに設定が自動で追加されるのが正しいかを確認するため、.terraform.lock.hclについてまとめました。

.terraform.lock.hclとは

terraform initコマンド実行時に、現在の作業ディレクトリに生成されるファイル。

terraform.lock.hclにはterraform init時に決定した、プロバイダー(AWSなどの外部システムとその指定バージョン)とモジュール(.tfファイルに記述したコード)の依存関係や互換性が記録されます。

そうすることで、terraform apply実行時に同じ決定を使用できるようになります。

公式の解説はこちらをご参照ください。Dependency Lock File

更新タイミング

terraform initコマンドを実行するたびに.terraform.lock.hclは自動的に作成、更新されます。

コードレビューを介して外部依存関係の変更について話し合うことができるように、このファイルをバージョン管理リポジトリに含める必要があります。

ファイルの内容

.terraform.lock.hclには下記のような内容が記載される。

.terraform.lock.hcl
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.

provider "registry.terraform.io/hashicorp/aws" {
   version     = "3.71.0"
   constraints = "~> 3.0"
   hashes = [
     "h1:1xvaS5D8B8t6J6XmXxX8spo97tAzjhacjedFX1B47Fk=",
     "h1:EOJImaEaVThWasdqnJjfYc6/P8N/MRAq1J7avx5ZbV4=",
     "zh:0015b491cf9151235e57e35ea6b89381098e61bd923f56dffc86026d58748880",
     "zh:4c5682ba1e0fc7e2e602d3f103af1638f868c31fe80cc1a884a97f6dad6e1c11",
 ]
}

version:構成のバージョン制約に基づいて(※1)Terraformが選択した正確なバージョン。
※1 下記 example.tfファイルで設定したversion 部分に沿い、選択される。

constraints:versionの選択を行なった際にTerraformが考慮したすべてのバージョン。
Terraformがこの情報を使用することはなく、Terraform利用者が設定値を確認するために用意されている項目です。example.tfに設定されたversion部分が反映される。

hashes:プロバイダーからの配布物のハッシュ値が記録される。Terraformは、インストールする各パッケージが、以前.terraform.lock.hclに記録されたチェックサム(ハッシュ値)の少なくとも1つと一致することも確認し、一致するチェックサムがない場合はエラーを返します。terraform: チェックサム検証

zh: zipのプロバイダー配布パッケージのハッシュ値が記録される。また全プラットフォーム(Mac、Windows、Linux等)のハッシュ値が記録される。

h1 :プロバイダー配布パッケージのコンテンツから計算されたハッシュ値が記録される。ローカルで使用しているプラットフォーム(Mac、Windows、Linux等)のみのハッシュ値が記録される。(ローカル端末でハッシュ値が計算されるため)

example.tf
terraform {
  required_version = "~> 1.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }

hashesの差分

providerブロックが変更されていない場合でも、以前に記録されなかった新しいチェックサムが追加されることがあります。

既存のスキーム(zhなど)に制限があった場合、または新しいスキーム(h1など)に追加の利点があった場合、Terraformは新しいハッシュスキームを導入することがあります。

上記のようにTerraformは日和見的にhashesを追加するので、差分が発生した場合は基本的にはその内容を取り込んでしまって良い。

参考:新しいプロバイダーパッケージのチェックサム

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信