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
にしました。
パスも通しましょう。
...
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なので、
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は辛すぎです。
また、全体的に適当ですいません。