Atlantis vs Terraform Cloud — OSSとSaaSの使い分け

1. 概要

  • Atlantisとは何か(OSSのTerraform自動化ツール)
  • Terraform CloudとAtlantisの機能比較
  • OSSかSaaSかを選ぶ判断基準
  • Atlantisのセットアップと動作フロー

AtlantisはGitHub/GitLab/Bitbucketのプルリクエストに対してterraform plan/applyを自動実行するOSSツールです。Terraform Cloudと似た役割を持ちますが、セルフホストで無料で使えるのが最大の特徴です。


2. Atlantisとは

Atlantisはプルリクエストに対して以下を自動実行するサーバーです。

PR作成/更新 → terraform plan(結果をPRコメントに投稿)
→ atlantis apply コメント → terraform apply(結果をPRコメントに投稿)
# atlantis.yaml(リポジトリルートに配置)
version: 3
projects:
  - name: production
    dir: environments/production
    workspace: default
    terraform_version: v1.9.0
    autoplan:
      when_modified: ["*.tf", "../modules/**/*.tf"]
      enabled: true
    apply_requirements:
      - approved
      - mergeable

3. 機能比較

比較軸Terraform CloudAtlantis
形態SaaSセルフホストOSS
コスト無料〜有料サーバー費用のみ(ソフトウェアは無料)
State管理組み込み別途設定(S3等)
PRコメント自動自動
applyの承認UI/APIPRコメント(atlantis apply
ポリシー制御Sentinel(有料)カスタムワークフロー
セットアップ低(GUI)中(サーバー構築・Webhook設定)
アップデート自動自前で管理
監査ログ標準機能GitのPR履歴が実質的な監査ログ

4. Atlantisのセットアップ概要

# Atlantis サーバーをEC2で動かす場合のTerraform例
terraform {
  required_version = ">= 1.9"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

variable "environment" {
  description = "環境名"
  type        = string
  default     = "dev"
}

data "aws_ami" "amazon_linux_2023" {
  most_recent = true
  owners      = ["amazon"]
  filter {
    name   = "name"
    values = ["al2023-ami-*-x86_64"]
  }
}

resource "aws_instance" "atlantis" {
  ami           = data.aws_ami.amazon_linux_2023.id
  instance_type = "t3.micro"
  # AtlantisはGitHubからのWebhookを受信するためパブリックIPまたはALBが必要

  root_block_device {
    volume_size = 20
    volume_type = "gp3"
    encrypted   = true
  }

  tags = {
    Name        = "${var.environment}-atlantis"
    Environment = var.environment
    ManagedBy   = "terraform"
  }
}

5. Atlantisを選ぶべきケース

  • コスト最優先: チームメンバー数が多く、Terraform Cloud有料プランのコストが大きくなる場合
  • データをクラウドSaaSに送りたくない: セキュリティポリシーでStateや設定ファイルを外部SaaSに送れない場合
  • 既存Kubernetesクラスターがある: AtlantisのHelmチャートがあり、k8s上で動かすのが簡単
  • カスタムワークフローが必要: planとapplyの間に独自の処理を挟みたい場合

6. Terraform Cloudを選ぶべきケース

  • 運用負荷を最小化したい: Atlantisサーバーのメンテナンス(OS更新・バージョンアップ)をしたくない
  • Terraform特化機能が必要: Sentinelポリシー・Run Tasksによるセキュリティスキャン
  • チームが急成長している: ユーザー管理・アクセス制御をSaaS側に任せたい

7. 関連記事


8. まとめ

  • AtlantisはOSSのTerraform自動化ツール。PRコメントでplan/applyを制御する
  • Terraform Cloudと機能的に似ているが、セルフホストで完全無料(サーバー費用を除く)
  • Atlantisの弱点はサーバー運用負荷とSentinelのようなポリシー機能がないこと
  • チームメンバーが多くTerraform Cloud有料プランが高額になる場合はAtlantisが有力な選択肢
  • 新規ならTerraform Cloud、既存インフラ・コスト重視ならAtlantisが現実的

対象バージョン: Terraform >= 1.9 / Atlantis v0.28+ 公式ドキュメント: https://www.runatlantis.io/