在Macbook上运行terraform init时,出现以下错误。有人能帮忙吗?
Provider registry.terraform.io/hashicorp/template v2.2.0没有适用于您当前平台的软件包darwin_arm64。
我的地形是1.1.4版本。
在苹果推出新的Apple Silicon平台之前的一段时间,hashicorp/template
插件已经过时(支持内置的templatefile
功能(。该提供商唯一可用的版本是在该平台存在之前发布的版本。
要在Apple Silicon硬件上取得进展,您将有两个主要选项:
-
理想情况下,计划从过时的提供程序迁移出去,转而使用内置的模板函数。该函数内置于Terraform本身,因此不需要任何外部提供程序即可工作。它还比旧的
template_file
数据源更有能力,因为templatefile
可以接受任何类型的模板变量,而template_file
只支持字符串。 -
如果您还没有准备好从该提供商迁移,那么您可能更喜欢在Rosetta 2仿真下使用Terraform的
darwin_amd64
版本。如果您将Terraform CLI版本用于darwin_amd64
,那么它将依次安装darwin_amd64
提供程序包,因此您将能够使用模板提供程序的最终版本v2.2.0。Terraform在罗塞塔2下没有得到官方支持,所以它的工作效果将取决于苹果仿真层的完整程度,但在你准备停止使用这个过时的提供商之前,它有望成为一个短期的解决方案。
我使用tfenv包解决了这个问题,该包可以构建适合平台架构的特定Terraform版本。
我运行以下程序来安装一个在我的M1 Macbook下运行的版本(在我的情况下是1.3.3版本(:
brew uninstall terraform
brew install tfenv
TFENV_ARCH=amd64 tfenv install 1.3.3
tfenv use 1.3.3
为我建造"hashicorp/template";解决方案来自源头。我用的是terragrumt。
git clone https://github.com/hashicorp/terraform-provider-template.git
cd terraform-provider-template
go build
将二进制文件移到terraform插件目录中。如果插件的目录不存在,则可以创建该目录。
mv terraform-provider-template ~/.terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64/terraform-provider-template
设置地形提供程序模板二进制文件的执行权限。
chmod +x ~/.terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64/terraform-provider-template
项目文件夹中的terraform init
或terragrunt init
。