結構久しぶりにテラフォーマーで夢中になる
概览
由于在使用 terraformer 进行 AWS 资源获取时遇到了一些困难,我决定写一篇文章来记录这个过程。
背景是,我将我的电脑更换为 Mac M1,并进行了第一次 terraformer 的执行。
另外,本文将省略 terraformer 安装的步骤。
环境
-
- Mac M1
- tfenvでterraform管理
关于错误
错误输出
$ terraformer import aws --resources=s3 --regions=ap-northeast-1 --profile=【自分のプロファイル】
2022/04/13 17:20:43 aws importing region ap-northeast-1
2022/04/13 17:20:43 open /[自分の環境]/.terraform.d/plugins/darwin_arm64: no such file or directory
错误消息。
最终结果有两个错误。
-
- terraformerは、terraform0.13.6での対応(1系はサポートしていない)
- aws pluginを指定の箇所に設置
错误解决方法
安装terraform 0.13.6
无法用tfenv进行安装。
由于使用tfenv管理terraform版本, 执行以下操作。
$ tfenv install 0.13.6
Installing Terraform v0.13.6
Downloading release tarball from https://releases.hashicorp.com/terraform/0.13.6/terraform_0.13.6_darwin_arm64.zip
##O=# #
curl: (22) The requested URL returned error: 403
当查看terraform 0.13.6时,发现没有terraform_0.13.6_darwin_arm64.zip文件。
所以,我们将手动安装。
M1 Mac上,通过tfenv下载低于Terraform 1.0.2的版本失败的问题,强行解决方法 | 公共备忘录
据此处和克拉梅索先生的文章显示,它在arm环境中也可以运行在amd上。
手动安装
我会查找tfenv的版本位置。
在我的情况下,它位于/opt/homebrew/Cellar/tfenv/2.2.3/versions文件夹中。
如何查找的提示是使用tfenv list命令。
$ tfenv list
* 1.1.7 (set by /opt/homebrew/Cellar/tfenv/2.2.3/version)
1.1.6
1.1.2
1.0.10
1.0.9
1.0.7
~ $ ls /opt/homebrew/opt/tfenv/versions
1.0.10 1.0.7 1.0.9 1.1.2 1.1.6 1.1.7
使用wget工具下载并解压一个zip文件。
$ cd /opt/homebrew/Cellar/tfenv/2.2.3/versions
$ mkdir 0.13.6
$ wget https://releases.hashicorp.com/terraform/0.13.6/terraform_0.13.6_darwin_amd64.zip
--2022-04-14 09:35:34-- https://releases.hashicorp.com/terraform/0.13.6/terraform_0.13.6_darwin_amd64.zip
releases.hashicorp.com (releases.hashicorp.com) をDNSに問いあわせています... 151.101.109.183
releases.hashicorp.com (releases.hashicorp.com)|151.101.109.183|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 35671246 (34M) [application/zip]
`terraform_0.13.6_darwin_amd64.zip' に保存中
terraform_0.13.6_darwin_amd64.zip 100%[============================================================>] 34.02M 18.2MB/s 時間 1.9s
2022-04-14 09:35:36 (18.2 MB/s) - `terraform_0.13.6_darwin_amd64.zip' へ保存完了 [35671246/35671246]
$ ls
terraform_0.13.6_darwin_amd64.zip
$ unzip terraform_0.13.6_darwin_amd64.zip
Archive: terraform_0.13.6_darwin_amd64.zip
inflating: terraform
$ ls
terraform terraform_0.13.6_darwin_amd64.zip
$ rm terraform_0.13.6_darwin_amd64.zip
$ ls
terraform
$ tfenv use 0.13.6 ✘ 1
Switching default version to v0.13.6
Switching completed
$ tfenv list
1.1.7
1.1.6
1.1.2
1.0.10
1.0.9
1.0.7
* 0.13.6 (set by /opt/homebrew/Cellar/tfenv/2.2.3/version)
当我完成之后尝试执行时,又出现了相同的错误。。。 wǒ shí, de …)
$ terraformer import aws --resources=s3 --regions=ap-northeast-1 --profile=【自分のプロファイル】
2022/04/14 09:45:53 aws importing region ap-northeast-1
2022/04/14 09:45:53 open /【自分の環境】/.terraform.d/plugins/darwin_arm64: no such file or directory
当我直接阅读Readme时,我发现以下的说明。
将您的Terraform提供程序的插件复制到合适的文件夹~/.terraform.d/plugins/{darwin,linux}_amd64/。
简而言之,就是让你把AWS插件放到这个目录中。
AWS的插件可以在以下链接找到:
https://releases.hashicorp.com/terraform-provider-aws/3.49.0/
这次我特意没有使用4系的版本,而是选择了3.49.0版本。(因为我有一种感觉,4系可能会有些问题。)
由于~/.terraform.d/已经存在,因此我执行了以下命令。
根据错误输出的内容,安装arm64。
$ cd ~/.terraform.d/
$ ls
checkpoint_cache checkpoint_signature
$ mkdir -p plugins/darwin_arm64
$ ls
checkpoint_cache checkpoint_signature plugins
$ cd plugins/darwin_arm64/
$ wget https://releases.hashicorp.com/terraform-provider-aws/3.49.0/terraform-provider-aws_3.49.0_darwin_arm64.zip
--2022-04-14 12:27:39-- https://releases.hashicorp.com/terraform-provider-aws/3.49.0/terraform-provider-aws_3.49.0_darwin_arm64.zip
releases.hashicorp.com (releases.hashicorp.com) をDNSに問いあわせています... 151.101.65.183, 151.101.129.183, 151.101.193.183, ...
releases.hashicorp.com (releases.hashicorp.com)|151.101.65.183|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 44046217 (42M) [application/zip]
`terraform-provider-aws_3.49.0_darwin_arm64.zip' に保存中
terraform-provider-aws_3. 100%[==================================>] 42.00M 13.3MB/s 時間 3.1s
2022-04-14 12:27:42 (13.3 MB/s) - `terraform-provider-aws_3.49.0_darwin_arm64.zip' へ保存完了 [44046217/44046217]
$ unzip terraform-provider-aws_3.49.0_darwin_arm64.zip
Archive: terraform-provider-aws_3.49.0_darwin_arm64.zip
inflating: terraform-provider-aws_v3.49.0_x5
$ rm terraform-provider-aws_3.49.0_darwin_arm64.zip
$ ls
terraform-provider-aws_3.49.0_darwin_arm64.zip terraform-provider-aws_v3.49.0_x5
执行
如果您遇到错误,我认为您已经执行了它,但还是会提供init.tf的创建说明。
$ echo 'provider "aws" {}' > init.tf
$ terraformer import aws --resources=s3 --regions=ap-northeast-1 --profile=【個人のプロファイル】
2022/04/14 12:28:50 aws importing region ap-northeast-1
2022/04/14 12:28:53 aws importing...
・・・
可以了。
总结
由于terraformer版本是固定的,所以最好小心处理。
由于错误内容并不清楚,希望对遇到相同问题的人有所参考。