在M1 Mac上运行Terraformer的方法(2021年8月版)

这篇文章是关于什么的?

这篇文章描述了如何让M1 Mac能够运行terraformer工具,将现有的AWS环境转换为terraform的代码。

发觉的导火线

当使用brew创建terraform和terraformer环境并执行时,发生了以下错误:在~/.terraform.d中没有找到plugins目录。

% terraformer import aws --regions=ap-northeast-1 --resources=s3
2021/08/01 17:02:00 aws importing region ap-northeast-1
2021/08/01 17:02:00 open /Users/hogehoge/.terraform.d/plugins/darwin_arm64: no such file or directory

首先得先下结论。

    • terrafomersはREADMEに書いてあるとおりterraform 1.0系や0.14系未対応なので、0.13系の最新版をtfenvを利用して導入する

 

    • 上記を行ったあとでbrewを使ってterraformerを導入する

 

    brewでterraformを導入しない方がよさそう

什么是terraformer?

terraformer是一款工具,它可以读取现有的云环境配置,并将其转换为terraform代码。但请注意,这并不是Google的官方工具,而是由Google旗下的WAZE公司的SRE开发的工具。详见链接:https://github.com/GoogleCloudPlatform/terraformer

AWS之外,云服务包括GCP和Azure,以及Kubernetes、Fastly、GitHub、Cloudflare、Datadog、Grafana、Okta等许多其他服务。[请点击此处查看详情(https://github.com/GoogleCloudPlatform/terraformer/tree/master/docs)]

尽管从头开始编写 Terraform 代码很困难,但使用这些工具可以节省创建时间。

另外,还有一个名为terraforming的工具也具有类似功能,但是自2019年以来已经停止更新,所以现在如果要使用的话,terraformer似乎更好。

建造方法

打开terraformer的README文件并查看其Capabilities(能力)部分,会发现如下描述:
https://github.com/GoogleCloudPlatform/terraformer#capabilities

Capabilities
(略)
6. Support terraform 0.13 (for terraform 0.11 use v0.7.9).

换句话说,terraformer支持terraform 0.13版本,但不支持1.0系列或0.14系列。确实,如果不仔细阅读README就不行了哈哈。

在这个情况下,即使使用brew安装terraform,它也不能正确运行。(可能是因为我的环境问题)

在这里,可以使用tfenv工具来引入Terraform 0.13系列版本(截至2021年8月1日,版本号为0.13.7),然后再引入terraformer工具进行构建。

使用tfenv和tfenv进行Terraform的安装引入

### tfenvの導入
% brew install tfenv

### tfenvでterraform 0.13.7 を導入
% tfenv install 0.13.7
Installing Terraform v0.13.7
Downloading release tarball from https://releases.hashicorp.com/terraform/0.13.7/terraform_0.13.7_darwin_amd64.zip
(略)
Installation of terraform v0.13.7 successful. To make this your default version, run 'tfenv use 0.13.7'
%

### terraformのコードを置くディレクトリに移動する。
### 以後の作業はこのディレクトリ内で行う。
% cd {terraformのコードを置くディレクトリ}

### terraform 0.13.7を利用するように設定
% tfenv use 0.13.7
Switching default version to v0.13.7
Switching completed
%

### terraformのバージョン確認
% terraform version
Terraform v0.13.7
(以下略)
% 

引入 terraformer

### terraformerの導入
% brew install terraformer
==> Downloading https://ghcr.io/v2/homebrew/core/terraformer/manifests/0.8.15
(以下略)
% 

### terraformerのバージョン確認
% terraformer version
Terraformer v0.8.15
% 

确认动作

以下是进行操作确认的步骤。请注意,事先需安装awscli并在aws config中进行默认设置,以确保能够连接到现有的AWS环境。(关于awscli的安装和配置方法,本文略去,请参考其他文章。)

### init.tfファイルを作成しawsの指定をする
% echo 'provider "aws" {}' > init.tf

### 初期化する(terraform使う時のお約束)
% terraform init

Initializing the backend...

Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v3.52.0...
- Installed hashicorp/aws v3.52.0 (signed by HashiCorp)
(略)
%

### terraformerでS3の設定をimportする
### 事前にaws configでdefault設定を行っておくこと
% terraformer import aws --regions=ap-northeast-1 --resources=s3
2021/08/01 23:21:15 aws importing region ap-northeast-1
2021/08/01 23:21:19 aws importing... s3
2021/08/01 23:21:20 aws done importing s3
2021/08/01 23:21:20 Number of resources for service s3: 1
2021/08/01 23:21:20 Refreshing state... aws_s3_bucket.tfer--XXXXXXXX    ### バケット名を伏せています
2021/08/01 23:21:22 Filtered number of resources for service s3: 1
2021/08/01 23:21:22 aws Connecting....
2021/08/01 23:21:22 aws save s3
2021/08/01 23:21:22 aws save tfstate for s3
%

总结

通过这样做,即使是M1 Mac,也可以使用Terrafomer。

我认为不久之后,Terraformer也将支持Terraform 1.0系列。但是,因为到2021年8月为止,信息仍然混乱,可能有人感到困惑,所以我写了这篇文章。

如果能对您有所帮助,我会感到幸福。

参考网页

请提供完整的中文内容,以便我为您提供正确的翻译。

bannerAds