Skip to content

IaC (Infrastructure as Code)

IaC(Infrastructure as Code) とは、
「インフラの設定や構成を コードとして管理する 手法」です。

本来 GUI や手作業で設定する部分をすべてコード化することで、

  • 誰でも同じ構成を再現できる
  • 変更履歴を Git で管理できる
  • 手作業のミスを防げる
  • 自動化しやすい

といった利点があります。

JIZI のインフラ運用では Terraform と Ansible の両方 を使い分けながら IaC を実現しています。


Terraform の役割(クラウドサービスの管理)

Section titled “Terraform の役割(クラウドサービスの管理)”

Terraform は クラウドサービスの設定を管理する IaC ツール です。

JIZI では主に以下の構成を Terraform で管理しています:

  • Cloudflare(DNS, Access, KV, R2, D1…)
  • AWS(SES, IAM)
  • Wasabi(S3互換)
  • Cloudflare Email Routing などの外部サービス

Terraform は “API を持つ外部サービスの設定管理” に強いのが特徴です。

特に JIZI の場合:

  • DNS レコード
  • セキュリティ設定(Access)
  • ストレージ・メール送信の構成
  • ドメイン認証設定(SPF/DKIM 等)

など、「人間の手で触ると事故りやすいもの」をすべてコード化しています。


Ansible の役割(サーバー内部の管理)

Section titled “Ansible の役割(サーバー内部の管理)”

一方で Ansible は、 「OS やサーバー内部の設定を自動化するツール」です。

JIZI では VPS(仮想サーバー)の構築・設定 に Ansible を使っています。

Ansible が担当するもの:

  • パッケージのインストール
  • Docker / nginx / certbot の設定
  • サービスの起動・再起動
  • ファイル配置
  • ユーザー管理
  • セキュリティ設定(ファイアウォールなど)

Terraform では管理できない、
“サーバーの中身” を Ansible がコントロールします。


項目TerraformAnsible
管理対象クラウドリソース(外部サービス)サーバー内部の設定
実行モデル宣言的(Stateに基づく)手続き的(Playbook通りに実行)
適しているものDNS / ストレージ / メール / CDN などVPS設定 / パッケージ管理 / デーモン制御
状態管理tfstate で構成を保持基本的には状態なし(idempotent)
JIZI での用途Cloudflare, AWS, Wasabi, SES…GROWI / CodiMD / bot / nginx など

GitOps を使用したインフラ管理の自動化

Section titled “GitOps を使用したインフラ管理の自動化”

IaC は「インフラをコードとして扱う」という考え方ですが、
それを日々の運用で破綻させないために必要なのが GitOps です。

GitOps は簡単に言えば、
“インフラの状態はすべて Git によって決まる”
という運用ルールです。

もう少し抽象的に整理すると、以下の 3 つが本質になります。


1. 変更はすべて Pull Request で行う

Section titled “1. 変更はすべて Pull Request で行う”

GUI で直接設定を変えたり、サーバーにログインして手作業で編集するのではなく、
インフラ変更は必ずコードとして書き、そのコードを Pull Request で提出する。

これにより:

  • 変更の意図が明確になる
  • 他のメンバーがレビューできる
  • 設定のズレ(“誰かがこっそり変えた”問題)が起きない

2. Git が「正しい状態」を表す唯一の場所になる

Section titled “2. Git が「正しい状態」を表す唯一の場所になる”

Terraform や Ansible が実際の環境をどう構築すべきかは、
Git に置かれているコードが決める。

このおかげで、

  • 再現性のあるインフラ構築
  • 安全なロールバック
  • チーム運用でも整合性のある構成管理

ができるようになります。


3. 自動化された仕組みがインフラを更新する

Section titled “3. 自動化された仕組みがインフラを更新する”

Git にコードがマージされたら、
人間ではなく 自動化された仕組み(CI/CD)がインフラを更新する。

ポイントは:

  • 人が直接「apply」したり「設定を触る」必要がない
  • “思わぬ設定変更” が起こらず安全
  • チームが大きくなっても運用ルールが崩れない

ということ。


  • クラウドインフラの設定管理には Terraform を用いる
  • VPS の設定管理には Ansible を用いる
  • IaC の設定ファイルは git で管理する(GitOps)

実際のリポジトリは

にあります!