メインコンテンツへスキップ

Terraformとは?

·
インフラ Terraform 入門
目次

はじめに:Terraformとは?
#

TerraformはHashiCorp社が開発したオープンソースのInfrastructure as Code(IaC)ツール
サーバ、ネットワーク、データベースなどのインフラをコードで定義し、自動的に構築・変更・バージョン管理できる。

TerraformはIaCツールの中でどこに位置するか
#

IaCツールは大きく5つに分類される

分類主な用途代表例
アドホックなスクリプトシンプルな自動化Bash, Python
設定管理ツール既存サーバの設定Ansible, Chef
サーバテンプレーティングイメージからサーバ構築Docker, Packer
オーケストレーションコンテナ管理Kubernetes
プロビジョニングツールインフラ全体の作成Terraform, CloudFormation

Terraformはプロビジョニングツールに分類される。
サーバ「上」に何かをインストールするのではなく、サーバ「自体」を作成するツール。

Terraformの特徴
#

動作の仕組み
#

TerraformはGo言語で書かれたOSS。
各端末のterraformバイナリから、AWSやAzureなどのクラウドプロバイダへAPIコールして動作する。

他のIaCツールとの違い
#

比較軸TerraformAnsibleCloudFormation
ツール種別プロビジョニング設定管理プロビジョニング
インフラの扱いイミュータブルミュータブルイミュータブル
言語スタイル宣言型手続き型/宣言型宣言型
言語HCL(DSL)YAMLJSON/YAML
マスタサーバ不要不要不要(AWS管理)
エージェント不要不要不要
マルチクラウド✕(AWS専用)

Terraformを選ぶ理由
#

  1. エージェントレス:クラウドプロバイダのAPIを直接呼び出すため、各サーバにエージェントをインストールする必要がない
  2. マスタレス:マスタサーバの運用・メンテナンスが不要
  3. 宣言型言語:「こうなってほしい」を書くだけで、Terraformが差分を計算して適用してくれる
  4. マルチクラウド対応:AWS、Azure、GCPなど複数のプロバイダを同じ言語で管理できる

実際の使われ方
#

Terraformは単体で使うこともあるが、他のツールと組み合わせることが多い:

  • Packer + Terraform:Packerでサーバイメージを作成 → Terraformでそのイメージを使ってインフラ構築
  • Docker + Kubernetes + Terraform:Terraformでインフラ構築(K8sクラスタ含む) → Kubernetesでコンテナ管理

まとめ
#

  • Terraformはインフラをコードで管理するプロビジョニングツール
  • 宣言型・マスタレス・エージェントレスという特徴を持つ
  • クラウドプロバイダのAPIを直接呼び出すシンプルな仕組み
  • 他のIaCツール(Docker、Kubernetesなど)と組み合わせて使われることが多い

参考資料
#