どうも,新卒エンジニアのナカノです.
今回から,技術ブログらしい記事を投稿していこうと思います.
最近までは「AWS,CloudFormation,Terraform,暗号化実装」などを学習してきたので,今後はこれらに関する記事を書いていく予定です.
そして初回は,Terraformに関するintroductionの記事となります.
- Terraformって何なの?
- 概要
- メリット
- どうやって使うの?
- 環境構築
- 利用方法
- 締め括り
- 参考文献
Terraformって何なの?
概要
Terraformとは,HashiCorpという会社がつくったinfrastructure as code softwareです.つまり,コードを書いてインフラリソースの作成や管理を行うことが可能な,インフラの構成管理ツールです.
コードを作成する場合,HashiCorp Configuration Language(通称,HCL)というJSON-likeな表記記法を使います.これはJSON-likeなので,JSONに慣れている方は割と直ぐに馴染むかもしれません.
メリット
Infrastructure as Codeの実現
まず,Terraformはinfrastructure as code softwareなので,インフラの作成や管理を効率的に行うことが出来るという利点があります.
hardwareの様な場合だとインフラ管理が非常に面倒であり,またインフラ構成を変更することになれば都度に機器を変えることが求められます.
一方で,構成管理ツールを用いれば,インフラ管理を行う際には設定ファイルのコードを編集するだけで済むので作業が非常に効率的になります.
また,インフラ構成の変更に対しても柔軟に対応することが出来るため,この様なツールを用いた作業方法はアジャイル開発に非常に適していると言えます.
対応するProviderの種類が多い
Terraformが対応出来るProviderはAWS以外に多くのものがあります.ここではそれらを列挙するのは面倒なので,気になる方はTerraformの公式ドキュメントを参照なさってください.
AWSに限って言えばインフラの構成管理ツールとしてはCloudFormationでも良さそうな気がしますが,何らかのタイミングでProviderが変わる場合も考えるとTerraformには柔軟性が非常にあると思います.
どうやって使うの?
環境構築
一番簡単な方法は,自分が使用しているOSに対応するzipファイルをTerraformの公式サイトからダウンロードするというものです.
ダウンロードのページは,Terraformの公式サイトのページ右上部にある"Download"の項目をクリックすれば開くことが出来ます.
ページを見るとlatest versionしか見当たりませんが,older versionをダウンロードしたい方はそのページにある"download older versions of Terraform"の部分をクリックしていただくとよいです.
ダウンロード後,Terraformが使える場所を確認しておきましょう.例えば,"terraform version"というversion確認用のコマンドを打ってうまく実行されればOKです.
利用方法
Terraformを使ってインフラリソースを作成するには,tfファイルをつくってそこに設定用のコードを書く必要があります.基本的には,tfファイルに書くべき設定はresourseやdataに関するもので大丈夫です.
そして設定ファイルの作成完了後に"terraform plan"というDry-run用のコマンドを実行してエラーのチェックを行います.
このコマンドの実行後にエラーがないことが確認出来たならば,その次に"terraform apply"というdeploy用のコマンドを実行してリソースを作成します.
この際に注意すべきことが2点あります.1点は,"terraform plan"を実行してエラーが出なかったとしても"terraform apply"の実行時にエラーが出ることがあるということです.そのため,planのコマンドの実行に成功したとしても油断は禁物です.
もう1点は,"terraform apply"の実行に失敗した場合は作成状況がロールバックしないという点です.よって,リソースの作成が正常に行われるまではエラーの原因を分析し,解決のためにplanとapplyのコマンドの実行の繰り返しを行うことが求められます.
締め括り
今回はintroductiveな記事ということで,この辺りで一旦筆を置かせていただこうかと思います.
次回からは具体的なインフラリソースの作成,簡単なインフラのアーキテクチャーの構成などの記事を書いていくつもりです.
2ヶ月前ぐらいから使い始めたばかりではありますが,技術ブログを通じて皆様とTerraformに関する知識を少しでも共有出来ればこの上ないことだと思っております.
それでは,次回以降にご期待ください.
参考文献
以下、Terraformの公式サイトのURLです: www.terraform.io