当执行 `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进行确认。
参考来源