当执行 `terraform init` 并在 `.terraform.lock.hcl` 中出现差异时,应该怀疑

首先

我有机会在一台与以往不同的 CPU 架构的机器上使用 terraform,并在执行 terraform init 时发现了 .terraform.lock.hcl 文件的差异,我对此进行了调查并总结了原因。

版本和环境的对象

    • Terraform バージョン

0.14 以上

実行環境

普段 darwin_amd64 から terraform を実行していたが、新たに darwin_arm64 環境で実行

差分的原因和解决方法

应对方式

如果只有h1发生了差异,请提交.terraform.lock.hcl。
※ 如果将来计划在与以前不同的环境中继续执行terraform操作。

provider "registry.terraform.io/xxx/xxx" {
  version     = "x.xx.x"
  constraints = "~> x.xx.x"
  hashes = [
+    "h1:xxxxxx",
     "h1:yyyyyy",

差分原因

从 Terraform 的 v0.4 开始,现在可以生成 .terraform.lock.hcl 文件了。

请参考以下文章,了解有关 .terraform.lock.hcl 的信息。

 

z1代表相应的Terraform提供者软件包的zip哈希值,h1代表相应Terraform提供者的内容哈希值。另外,由于z1和h1存在各种不同的原因,获取哈希值的来源也不同,当执行环境增加时,会添加更多哈希值。关于各种不同原因,请参考以下问题的评论以获得更顺利的解答。

 

添加执行环境

当我执行 terraform init 时发现了差异并意识到了这个问题,但如果预先计划了要添加执行环境的话,可以使用以下命令来添加预定的平台。

如果计划在darwin_arm64环境下运行,以下是一个例子。

terraform providers lock -platform=darwin_arm64

如果您想详细了解terraform providers lock命令,可以通过以下URL进行确认。

 

参考来源

 

广告
将在 10 秒后关闭
bannerAds