今回の記事について
初投稿からだいぶ時間が経ってしまいましたが、
今回は、Terraform備忘録シリーズ第二弾で、シリーズのメインテーマとなる「Terraform」について解説していきます。
Terraformとは?
概要
前回の内容で解説したIaCツールの1つで、Hashicorpによって開発されました。
構成言語は、Hshicorp Configuration Language (HCL) という独自の言語を用いており、インフラストラクチャの構成のバージョン管理、リソース作成・変更・修正といった作業が簡単に出来るものとなっています。
そんなTerraformは、以下のようなメリットがあるので、IaCの中でも使用されることが多い言語です。
Terraformを使うメリット
1. 様々なクラウドサービスに対応している
Terraformが対応しているクラウドサービスの例としては、Amazon Web Service (AWS)、Google Cloud Platform (GCP)、Microsoft Azureといった代表的なものが挙げられます。
これにより、複数のクラウドサービスを組み合わせてサービスを構築する「マルチクラウド戦略」を採用しやすいです。
マルチクラウド戦略のメリット
- クラウドを切り替える選択が可能で、サービスの信頼性を高めることが出来る。
- 実現したいサービスをコスト効率の良いアーキテクチャで実現することが出来る。
- 特定のクラウドに依存しないので、クラウドサービスの唐突なアプデにも対応出来る。
このようにメリットが多いマルチクラウド戦略を実現するためにも、「利用したいパブリッククラウドを1つのIaCツールで管理したい」という気持ちが芽生えると思います。そのような場合にTerraformは非常に有効です。
2. 変更内容のチェックが安全に行える
terraformは次のコマンドを使用して、変更内容のチェックを簡単にすることが出来ます。
変更内容は現在のインフラ構成と、Terraformの設定ファイルで定義されている内容を比較することで検出されます。
terraform plan
このコマンドは、検出された変更を実際のシステムに適用することなく、「これだけ変更として検出されました。」というのをただただ教えてくれるものです。
つまり、次のように、変更内容のレビューを変更の適用前に行うことが可能です。
- 不意のエラーや意図しない変更を防ぐことが出来る。
- 現在のシステムが期待されるような状態であるかを気軽に確認出来る。
3. 宣言型の言語である
一般的にプログラミング言語は、次の2つのタイプに分類されます。
- 手続き型:ユーザがゴールまでの手順を記述する言語
- 宣言型 :ユーザがゴールだけを宣言して、最適な手段は現状から選択する言語
手続き型
- スケジュールや行く場所などは自分で決めて観光する
- トラブルが発生した場合は、現状を把握して次にどうするかは自分で決定する必要がある
宣言型
- 「こういう条件で観光したいです。」と旅行会社に伝えれば、旅行会社が条件に合う最適なツアーを提案してくれる
- トラブルが発生した場合は、現状を把握して次にどうするかは旅行会社が決定してくれる
インフラ開発においては、「こういう条件でリソースを構築したい」、「複雑なシステムなので、現状を簡単に把握できる」言語が好まれます。
Terraformは、宣言型の (実際のリソースと設定ファイルを比較して、アクション (追加・変更・削除) を決定してくれる) 言語なので、インフラ開発に非常に有用な言語です!
Terraformのコード例
最後に、Terraformのコードの構文について紹介したいと思います。
TerraforのS3バケットの例文を使っています。
resource "aws_s3_bucket" "example" {
bucket = "my-tf-test-bucket"
tags = {
Name = "My bucket"
Environment = "Dev"
}
}
人によって感じ方は違うと思いますが、結構理解しやすい構文をしていますよね。
さらに、フォーマットをすることで、=
の位置がそろって開発者側にも読みやすいコードにすることが出来ます。
tags
については、リソースにタグをつける操作をするために書いているものなので、
resource "aws_s3_bucket" "example" {
bucket = "my-tf-test-bucket"
}
と、たった3行だけでS3を作るコードが書けちゃいます。すごい、もうTerraformマスターです。 ( bucket
には、作成したいバケットの名前を入れてください。) ということで、初心者の方でも勉強しやすいコードになっていますので是非使ってみてください!
まとめ
- Terraformとは
- Hashicorpが開発したIaCツールの1つで宣言型の言語
- 様々なクラウドサービスに対応しており、マルチクラウド戦略をとりやすい!
- たった数行でリソースを構築するコードを書くことができ、記事もたくさんあって勉強しやすい
- 乗るしかない、このビッグウェーブに (古い)
- 次回は、Terraformのフォルダ構成や実行の流れなど実践的なについて解説します!