クラウド環境では、サーバーやネットワークなどのインフラを構築する機会が多くあります。
例えば次のような作業です。
- EC2インスタンスの作成
- VPCやサブネットの設定
- RDSの作成
これらを手動で構築していると
- 設定ミスが発生する
- 環境ごとに設定が変わる
- 再現性が低くなる
という問題が発生します。
このような問題を解決する仕組みが
Terraformです。
この記事では次の内容を解説します。
- Terraformの基本概念
- CloudFormationとの違い
- Terraformの構成要素
- tfstateファイルの役割
① Terraformの基本概念
Terraformとは
インフラ構成をコードで管理するIaCツールです。
通常のインフラ構築
管理者
↓
AWSコンソール操作
↓
インフラ作成
Terraform
Terraformコード
↓
Terraform
↓
インフラ作成
この仕組みにより
- インフラ構成をコード管理できる
- 同じ環境を再現できる
- 自動でインフラ構築できる
というメリットがあります。
② TerraformとCloudFormationの違い
TerraformとCloudFormationはどちらも
IaCツールです。
主な違いは次の通りです。
| 項目 | Terraform | CloudFormation |
|---|---|---|
| 提供元 | HashiCorp | AWS |
| 対応クラウド | マルチクラウド | AWS専用 |
| 記述形式 | HCL | YAML / JSON |
イメージ
Terraform
↓
AWS / GCP / Azure
CloudFormation
↓
AWSのみ
③ Terraformの構成要素
Terraformでは
.tfファイルでインフラ構成を定義します。
.tfファイルの役割
.tfファイルとは
Terraformの設定を記述するファイルです。
例
main.tf
network.tf
ec2.tf
required_providers
required_providersは
使用するクラウドプロバイダを指定する設定です。
例
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}
}
}
resource
resourceは
作成するインフラリソースを定義する部分です。
例
resource "aws_instance" "web" {
instance_type = "t2.micro"
}
つまり
| 要素 | 役割 |
|---|---|
| required_providers | クラウド指定 |
| resource | リソース作成 |
になります。
④ tfstateファイルの役割(まとめ)
Terraformでは
tfstateファイルというファイルが作成されます。
tfstateとは
Terraformが管理しているインフラ状態を記録するファイルです。
Terraformコード
↓
Terraform実行
↓
AWSリソース
↓
tfstateに状態保存
主な役割
・インフラ状態の管理
・差分検出
・更新管理
まとめ
Terraformは
インフラ構成をコードで管理するIaCツールです。
主なポイントは次の通りです。
・TerraformはIaCツールの一つ
・CloudFormationとの違いはマルチクラウド対応
・.tfファイルでインフラ構成を定義する
・resourceでリソースを作成する
・tfstateでインフラ状態を管理する
Terraformを利用することで
再現性の高いインフラ構築が可能になります。