2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M1Macでterraformerを動かす方法(2021年8月版)

Last updated at Posted at 2021-08-01

この記事は何?

既存AWS環境をterraformのコードにしてくれるterraformerというツールをM1 Macで動かせるようにするために行った記事です。

気づいたきっかけ

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といったクラウド、そしてKubernates, Fastly, GitHub, Cloudflare, Datadog, Grafana, Oktaなど多くのサービスに対応しています。
https://github.com/GoogleCloudPlatform/terraformer/tree/master/docs

terraformのコードを1から書くのは大変ですが、こうしたツールを使うことで作成時間の省力化につながるかと思います。

なお、同様のツールで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でdefault設定を行い、既存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
%

まとめ

このようにすることで、M1Macでもterrafomerが利用できるようになります。

そのうち、terrafomerもterraform 1.0系に対応してくると思うそれまでの記事ですが、2021年8月時点では情報も錯綜していて困っている人もいるのではないか?と思ったので記事を作成しました。

何かのお役に立てば幸いです。

参考ページ

https://dev.classmethod.jp/articles/terraformer-version-dependence/
https://zenn.dev/ww24/articles/e52e7a9f3332b4
https://blog.mizukami.sh/entry/2021/01/02/terraform-on-apple-silicon-temp

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?