![[小ネタ] 複数のプラットフォームで terraform initする際の注意点](https://devio2023-media.developers.io/wp-content/uploads/2019/05/terraform-eyecatch.png)
[小ネタ] 複数のプラットフォームで terraform initする際の注意点
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは!コンサル部のinomaso(@inomasosan)です。
チームでTerraformを運用していた際に、terraform initで.terraform.hcl.lockに関するエラーに遭遇したため、対応方法をまとめていきます。
検証環境
今回実行した環境は以下の通りです。
| 項目 | バージョン | 
|---|---|
| Terraform | 1.1.7 | 
| AWS Provider | 4.12.1 | 
エラー内容
ローカル端末でterraform initした際に、以下のようなエラーが発生しました。
│ Error: Failed to install provider │ │ Error while installing hashicorp/aws v4.12.1: the current package for │ registry.terraform.io/hashicorp/aws 4.12.1 doesn't match any of the checksums previously recorded │ in the dependency lock file
原因
結論から言うと.terraform.hcl.lockに含まれるproviderのチェックサムが、複数のプラットフォームに対応していないことが原因でした。
今回の場合ですと、Windowsでterraform initした後に、Macでterraform initしたところエラーが発生しました。
OSやCPUアーキテクチャが異なる環境でterraform initを実行したい場合は、.terraform.hcl.lockを事前に作成する必要があります。
対応
terraform providers lockで、使用予定のプラットフォームのチェックサムが事前入力された.terraform.hcl.lockを作成することができます。
以下のコマンドにてWindows、Mac、LinuxでAMD64やx86_64、Armに対応したlockファイルを可能です。
terraform providers lock \ -platform=windows_amd64 \ -platform=darwin_amd64 \ -platform=linux_amd64 \ -platform=darwin_arm64 \ -platform=linux_arm64
windows_arm64は対応しているの?
AWS Provider4.12.1だと未サポートでした。
│ Terraform failed to fetch the requested providers for windows_arm64 in order to calculate their │ checksums: some providers could not be installed: │ - registry.terraform.io/hashicorp/aws: provider registry.terraform.io/hashicorp/aws 4.12.1 is not │ available for windows_arm64
WindowsのArmでTerraformの運用が必要な場合には、注意が必要そうです。
参考
まとめ
複数のプラットフォームでterraform initを実行する場合は.terraform.hcl.lockの事前作成が必要だよというブログでした。
この記事が、どなたかのお役に立てば幸いです。それでは!






