Mac M1运行terraform init报hashicorp/template无darwin_arm64版本解决方案问询
解决方案
优先推荐:替换废弃的template provider
hashicorp/template provider早在2020年就已官方废弃,所有功能都可以用Terraform原生能力替代,无需引入额外provider,从根源解决兼容问题:- 原
template_file数据源直接替换为内置的templatefile()函数,语法差异极小,仅需调整调用写法即可 - 原
template_dir功能可结合fileset()函数 +local_file资源实现
该方案无需改动环境配置,且和你当前使用的aws provider v3.53.0完全兼容。
- 原
快速兼容方案:使用Rosetta 2转译运行终端
如果你暂时不想修改现有Terraform代码,可以直接通过Rosetta兼容模式运行Terraform:- 访达中打开「应用程序」-「实用工具」,找到你常用的终端应用(终端/iTerm2等)
- 右键点击应用图标,选择「显示简介」,勾选「使用Rosetta打开」
- 重启终端后进入项目目录,删除本地缓存的
.terraform目录和.terraform.lock.hcl文件,重新执行terraform init即可
该模式下Terraform会以x86_64架构运行,可正常拉取darwin_amd64版本的template provider包,和aws v3.53.0版本无冲突。
原生ARM运行方案:手动编译template provider本地包
如果你希望保持终端原生ARM运行,可自行编译适配darwin_arm64的template provider二进制:- 本地安装Go编译环境
- 拉取hashicorp/terraform-provider-template源码,切换到v2.2.0标签
- 执行
go build编译出arm64架构的二进制文件 - 将二进制文件放入本地插件目录:
~/.terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64/ - 重新执行
terraform init即可识别本地的适配版本
内容的提问来源于stack exchange,提问作者Harish J
相关产品推荐
相关产品推荐

