デプロイメント間の環境ファイル(.env)の比較

環境間で.envファイルを比較して、欠落した変数、変更された値、設定のドリフトを検出します。秘密情報を公開せずに環境ファイルをDiffする安全なプラクティスを学びます。

Configuration Diff

詳細な説明

環境ファイル(.env)のDiff

環境ファイル(.env)は、環境間で異なる設定変数を格納します — 開発、ステージング、本番。これらのファイルを比較することで、設定のドリフト、欠落した変数、意図しない値の変更を検出できます。

.envファイルの構造

# データベース設定
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp_dev
DB_PASSWORD=secret123

# API設定
API_URL=https://api.dev.example.com
API_TIMEOUT=30

.envの変更タイプ

変更 リスクレベル
変数追加 + REDIS_URL=redis://... 中 — アプリに必要な場合あり
変数削除 - LEGACY_API_KEY 高 — 機能が壊れる可能性
値変更 API_URLが変更 中 — 環境ごとに意図的
変数名変更 DB_PASSDB_PASSWORD 高 — アプリコードと一致必要
コメント変更 ドキュメントのみ

環境間の比較

.env.development.env.productionを比較する一般的なタスク:

--- .env.development
+++ .env.production
 DB_HOST=localhost          → DB_HOST=prod-db.internal
 DB_PORT=5432                 DB_PORT=5432
 DB_NAME=myapp_dev          → DB_NAME=myapp_prod
-DEBUG=true
+SENTRY_DSN=https://...
 API_URL=http://localhost    → API_URL=https://api.example.com

安全なDiffプラクティス

Diffで秘密値を表示してはいけません。 代わりに:

  1. 値をマスク — 変数名のみ表示:DB_PASSWORD=*** vs. DB_PASSWORD=***
  2. キーのみ表示 — 変数名のみを比較して欠落/余分な変数を検出
  3. 値をハッシュ化 — 内容を公開せずに変更を検出するため各値のハッシュを表示
  4. .env.exampleを使用 — プレースホルダー値を含むテンプレートファイルと比較

設定ドリフトの検出

設定ドリフトは環境が意図せず発散した場合に発生します:

本番にあるがステージングにない変数:
  - FEATURE_FLAG_NEW_UI
  - MONITORING_ENDPOINT

ステージングにあるが本番にない変数:
  - DEBUG_SQL
  - MOCK_PAYMENTS

自動化

CI/CDパイプラインでDiffツールを使用して:

  • デプロイ前にすべての必要な変数が存在することを確認
  • ある環境に新しい変数が追加されたが他に追加されていない場合にアラート
  • 環境の差異レポートを生成

ユースケース

環境ファイルのDiffはデプロイ前に設定の一貫性を確保するために不可欠です。DevOpsチームは、ランタイムエラーの原因となる欠落変数のキャッチ、環境固有のオーバーライドの監査、環境の違いを示すことによる新メンバーのオンボーディング、実際の環境ファイルと同期した.env.exampleテンプレートの維持に使用します。

試してみる — Diff Viewer

フルツールを開く