Terraformの基礎基本

レイ
2023-03-14
2023-03-14

INDI_IMAGE_562お疲れ様です。おれちゃんでござる!

前回Terraformは何だとざっくり紹介しましたが、今回はTerraformをいじりながらこのツールの可能性を一緒に実験しましょう!

TerraformでAWSなどのクラウドプロバイダーでもコードでインフラを自動的に構築できます。でも大きいインフラより、この記事でEC2インスタンスを例として使ってTerraformの便利さを紹介したいと思います。

Terraformのインストールと設定

まずはソフト自体をダウンロードしないと使えないですね。方法はいくつかあります。

https://developer.hashicorp.com/terraform/downloads

OSごとにインストール手段は違ってます。Windowsの場合だったらバイナリーをダウンロードして実行できますがそんな方法だったらバージョンアップしにくいので Chocolateyの使いおすすめします。このようでLinuxのYumみたいにアップグレードしやすくてPathも自動的に更新する。

次はフォルダーを作ってコードを書き始める準備万端や!

初めての.tfファイル

Terraformは.tfの拡張子ファイルを全部読んで実行する。もちろんベストプラクティスとしてはリソースを適切のファイルに整理することは大変勧められおりますが所詮Terraformプログラムのためではなくて人間がもと簡単に読めるためなんです。

はじめからキレイにコードをまとまましょう!

まずはbackend.tfファイルにTerraformのプロバイダーの設定を載せます。Terraformは所詮各プロバイダーAPIを簡単に対応するツールなのでそのAPIに対するProviderの名前とバージョンを記入必要があります。

こう書いていればTerraformのバージョンやAWSのProviderのバージョンも管理できます。

そうしましたら本格的にインフラを生み出すコード書けます。どうすればAWSのリソースを作れると訊いたら、全部ドキュメンテーションに書かれています。

例えばEC2だったらここです。https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

ドキュメンテーションはすごく簡単に書かれてるし読みやすいです。本当に、手作業で普段適切な値に記入する変数をコードに記入することだけなんです。

変数数を最短的にしたらこのようなコードになります。変数少ないでしょうね。でも記載されていない変数は自動的にデフォルトの変数に変えられるから大丈夫、コードはかならず実行します。

っていうかどうやって実行するの?

Terraformコマンド

Terminalでコードがあるフォルダーに移動してterraformコマンドを打ったら実行できます。

terraform initTerraform環境が作れる
terraform validateでコードには構文規則エラーがないと確認する
terraform fmtでコードのスペースや位置を調整する
terraform planでドライランでき、プロバイダーの連携も確認する
terraform applyでコード実行!

今の場合だったらまずはterraform initでTerraform環境を作らないとあかん。これは初期のときだけ。実行したらこうなります。

terraform initはbackend.tfファイルに記載されてるプロバイダーを読んでダウンロードする。

次はterraform plan「ドライラン」で続きましょう!

 

ご覧の通り記載されていない変数はいっぱいありますがコードをapplyで実行したら見られます。

ではterraform applyで続きましょう!

ご覧の通り一つのリソースが作られていた。32秒でEC2を作れました。
今回は例として使ったEC2は簡単でしたが複雑な構築ではすごく時間の稼ぎになれます。

コードと作られた構築の完全性はtfstateというファイル保管されてます。

tfstateはこんな感じです。↑

AWSに確認すればTerraformで作ったEC2の様子が見れます。

最後に

今のEC2はt2.microなので別に大金額はかからないんですけど念のためお掃除しましょう!
処理をしたいのならterraform destroyコマンドで簡単に構築削除ができます。以上です。そうですよ、構築削除
はこんなに簡単にされますよ。

どうやろ?Terraformのおかげで構築を作るなんて秒の問題になるって凄いやろ!おまけに手作業ゼロで!

次もっとややこしいTerraformの利用シーンを紹介しようっかな

お楽しみにしてね ^^💦