Terraformについて完全理解した。(ダニング=クルーガー効果)
Terraformについて
- HashiCorp社がGo言語で開発したツールである。
- インフラを構造化言語で記述することができる。
Terraformで、できること
- インフラをコード化できる。
- 何度もインフラを構築する時に、手作業で構築しなくて良い。
- 構築後のインフラを管理も可能。
- 変更やインフラの追加に対応することが可能。
- 既存のインフラの設定をtfstateファイルという設定を保存するファイルにimportすることができる。
Terraformは何をしてくれるのか。
- 記述した構造化言語の記述を元に、AWSのAPIを叩いてインフラを作成する。
- APIでインスタンスを作成可能だが、Terraformを使うことで状態の管理もできるところが良い。
Terraformでコードを書くときには、何のドキュメントを参考にするのか。
- まず参考にしたのは、下記の2点です。
- Terraformのドキュメント
- AWSのAPIドキュメント
- 基本的にTerraformのドキュメントを参考にして、terraformを記述していくが、terraformで指定する値がわからないときに、AWSのAPIドキュメントを参照して、値やパラメータの設定を確認します。
私がTerraformでインスタンスを構築するときにやったデバッグ手順
Terraformでどこのパラメータを設定したら良いのか、何の設定が不足しているのか、わからないことが多々あった。いろいろなドキュメントを見たりして、やってみたが、うまくいかなかった。とりあえず、awsのコンソールを触って、インフラを構築することはできるため、Terraformを使ってコード化するときに現物とterraformのコードを見比べながら、デバッグの方法をやっていました。
-
まず、手作業でインスタンスを構築する。
- terraformのimportコマンドで、手作業で構築したインスタンスをtfstateファイルにimportする。【1】
terraform import aws_instance.<インスタンス名> <インスタンスID>
terraformのimportコマンド
- terraformのimportコマンドで、手作業で構築したインスタンスをtfstateファイルにimportする。【1】
-
次に、terraformで簡単なインスタンスを構築する。
- terraformで作成した場合、tfstateファイルができる。【2】
- 例えば、こちらを参考にする。
- terraformで作成した場合、tfstateファイルができる。【2】
-
手動で作成してimportしたtfstaeファイル【1】に、terraformで作成したtfstateファイル【2】を比較して、不足していそうなパラメータなどを調べて、Terraformのファイルに追記する。
この方法を繰り返すことで、実際に構築してあるインフラをTerraformのコードとして実装していました。
awsのコンソールを触ってインフラを構築できる人が、Terraform化するときの助けになってくれると良いと思っております。