はじめに
Terraform歴2ヶ月の筆者が、個人的に最も効率が良いと考えるTerraformの手順を7ステップに分けて紹介します。
歴が浅い筆者でも、以下のステップでスムーズに開発できたので参考になれば嬉しいです!
前提:Terraformとは
Terraformは、HashiCorpによって開発されたオープンソースのインフラストラクチャアズコード(IaC)ツールです。APIを介してクラウドサービス等を安全かつ効率的に作成、管理、更新するために広く使用されています。
Terraformの7ステップ
Terraformでのリソースの作成・管理は以下の7ステップで行うと効率的です。(筆者の感想です)
- 【step1】 キーとバケットの準備、ステートやファイルレイアウトの確認を行う
- 【step2】 GUIでリソースの確認を行う
- 【step3】 生成AIにプログラムの雛形を作ってもらう
- 【step4】 プログラムの雛形の修正
- 【step5】
% terraform plan
で変更の差分を確認する - 【step6】
% terraform apply
で変更を適用し、動作確認を行う - 【step7】(必要に応じて)
% terraform destory
で作成したリソースを削除する
以下でそれぞれのステップについて解説します。
【step1】 キーとバケットの準備、ステートやファイルレイアウトの確認を行う
Terraformを記述するための初期準備として、アクセスキーとシークレットキーやS3のバケットの用意が必要です。各プロジェクトごとに方法が異なると思うので、まず初めに確認してください。
またステートやファイルレイアウトなど、どこに何を記述すれば良いのかをはじめに確認してください。
最初の確認を怠ると、以降のTerraformプログラム実行時の律速となり、タスクの見積もりにズレが生じてしまいます。筆者はまず一番最初に確認をすると良いと考えています。
【step2】 GUIでリソースの確認を行う
いきなりTerraformを記述したいところですが、作るものの実体を何となくでも良いので理解してからTerraformを書いた方が圧倒的に効率が良いです。
ここでパラメータの意味まで理解するのがベストです。
そして理解のために最も手っ取り早いのが、GUIでリソースを作ってしまうことだと考えています。作成が困難である場合(例えばVPCやサブネットの準備等で工数が大きい場合)は、作成画面でリソースの設定の確認まで出来れば良いと思います。
以下にAWSのECSonEC2を例にして説明していきます。
ECSonEC2の作成のために必要な設定は上記です。
ここで、ASGやオペレーティングシステム、インスタンスタイプ等の詳細な設定が必要になることがわかります。
このような設定すべきパラメータを一つ一つ理解し、Terraformのプログラムに反映することが必要です。このタイミングで不明点を調べる&作成すべきものは何なのかを認識合わせすることが必要です。
パラメータがわかりやすくなっているこのタイミングで、全てのパラメータの意味を理解しておくことが今後のTerraform作成で効いてきます。
またパラメータの要件をメモしておくと、PR作成時に役に立つのでオススメです。
不明点あれば、些細なことでもissueに書き溜めておくと、見つけやすく共有しやすいのでオススメです。
【step3】 生成AIにプログラムの雛形を作ってもらう
Terraformのプログラムを記述していきます。
とは言っても初心者にとっては0から全て書くのは大変なので、生成AI(ChatGPTやCopilot)にプログラムの雛形を書いてもらいます。
この時、step2で確認した詳細な要件を具体的に入れて指示すると良いです。例えば以下の指示を出して生成AIにプログラムの雛形を作成してもらいます。
###プロンプトの例
あなたは卓越したTerraformプログラマーであり、AWSについて専門家と同等の知識を持っています。
TerraformでECSonEC2のプログラムを書いてください。
詳細な条件は以下です。
(1)ASG新規作成(2)プロビジョニングモデルはオンデマンド(3)EC2のインスタンスタイプ:t2.micro
(4)必要な容量は最小1、最大4(5)SSHの接続可として新しいキーペアを作成
【step4】 プログラムの雛形の修正
step3で生成AIが作成した雛形の完成度は100%ではないので、逐一修正することが必要です。
生成AIが作成したTerraformプログラムの設定と要件を1対1対応をさせることて過不足を判定し、それに応じてドキュメントを見ながら修正を行うと良いです。(Terraformの開発においてドキュメントは至高です。)
またstep5、step6において要件が満たされていなければ本step4に戻ります。step5の% terraform plan
ではTerraformの文法チェックができるので、適宜使って文法の確認をすると良いかもしれません。
【step5】 % terraform plan
で変更の差分を確認する
% terraform apply
実行前に必ず変更差分を確認を行ってください。(1番最初のみ% terraform init
が必要です。)
特に何が作られて、何が消されるかを一つ一つ確認してください。
リソースの削除はとても危険なので、% terraform plan
の時点で注意深く確認してください。
【step6】 % terraform apply
で変更を適用し、動作確認を行う
% terraform plan
が終わったら% terraform apply
で適用します。
% terraform apply
が完了したら、GUIでリソースの確認を行うと良いです。
必要に応じて動作確認のテストを行ってください。
【step7】 (必要に応じて)% terraform destory
で作成したリソースを削除する
確認が終わり不要になったリソースは% terraform destory
で一括削除できます。特にDBのインスタンスは起動しているだけでお金がかなりかかるので、不要なものは消しておくと良いと思います。
リソースの削除はとても危険です。実行する際には、削除してはいけないリソースがないかどうか必ず確認してください。
おわりに
以上で解説を終わります。
少しでも参考になれば幸いです。