2
0

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 5 years have passed since last update.

TerraformとTerraformerをAWSのCent6に入れてみた。

Last updated at Posted at 2019-11-08

OSが古くてすいません。

Terraform初心者です。

Terraformがなんとなくわかったので、terraform importしていたのですが辛すぎたので
インポートツールを入れてみました。

Terraformのインストール

本家参照で十分です。
https://learn.hashicorp.com/terraform/getting-started/install.html

しいて言えばプロファイルが、OSがCentなので~/.bash_profileです。

設置場所に悩みましたが、

/usr/local/bin/terraform

に設置しました。

Terraform importに関して

勉強がてらRoute 53のとあるゾーン1つをimportしようとしてみましたが、terraformでは1レコードずつimportしないといけないので
めげてしまいました。

importツールとしてはterraformingとterraformerが有名だそうですが、なんとなくterraformerにしてみました。

Terraformerのインストール

前提

Go言語が必要になります。
また、今現在のTerraformerではGo1.13を求められたので注意が必要です。
CentOS6と古いのが原因かと思われますが、Go1.13がリポジトリにはありませんでしたので別途ダウンロードしています。

Goのインストール

以下参考。 インストールの04まで行えば大丈夫。(CentOS7って書いてあるけど気にしない)
すでに古いGolangが入っている場合は消しましょう。
https://linuxize.com/post/how-to-install-go-on-centos-7/#how-to-install-go

[2019/11/10追記]
rpmが転がっている様なので、そちらで入れてからyum管理にするのをオススメします。

Terraformerのインストール

本家の"Installation"を参考しました。
https://github.com/GoogleCloudPlatform/terraformer#installation

設置場所はなんとなく
/usr/local/bin/terraformer
にしました。

パスも通しましょう。

.bash_profile
...
export PATH="$PATH:/usr/local/go/bin" #Go言語のインストールで設定したパス
export PATH="$PATH:/usr/local/bin/terraformer" #Terraformerの場所を追記
...

保存したら忘れずに

source ~/.bash_profile

また、3番で、

cd /path/to/terraformer/directory
go run build/main.go aws

とインストールすると、以降コマンドがterraformerではなくterraformer-awsになります。
気を付けましょう。
(私はterraformer-awsで使ってます。)

4番は何を言っているのかちょっと悩みましたが、terraform作業ディレクトリ(私は /home/ec2-user/terraform/ とディレクトリを作りました。)
にinit.tfと言うファイル名で、私の場合はawsなので、

init.tf
provider "aws" {}

を作成して、init.tfがある場所でterraform initを実行しろということです。

Terraformerでインポート

Terraform作業ディレクトリ(init.tfがある場所)で

terraformer-aws import aws --resources=vpc,subnet,ec2_instance,route53,cloudfront --connect=true --regions=ap-northeast-1

などとするとガンガンtfファイルが作成されます。
resources=、regions=の値は適宜変えてください。

すると作業ディレクトリに

...
generated/aws/ec2_instance
generated/aws/route53
generated/aws/cloudfront
...

といったフォルダができるはずです。

terraform planしてみる

ここでちょっとはまったのが、tfファイルを変更して、いざinit.tfがあるフォルダでterraform planしても
Already up-to-date! と出て何も計画されません。

なんでだろうと思ったのですが、先ほどgeneratedフォルダを見せた通り、サービス毎に
provider.tfというinit.tf的なファイルができていてそちらでterraform planする形になります。

つまりAWSのサービス毎(ec2_instance、route_53とか)のディレクトリに移動してterraformコマンドを
実行する必要があります。

$ cd ./generated/aws/ec2_instance
$ terraform init  #これ大事
$ terraform plan

最初なんで動かないんだろうと思ったのでメモです。

終わり

terraformで手動importは辛すぎです。
また、全体的に適当ですいません。

2
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?