systemdサービスの環境変数

systemdユニットファイルでの環境変数設定をマスターします。インラインEnvironment=とEnvironmentFile=の比較、変数の優先順位、シークレット管理のベストプラクティスを学びます。

Operational Guides

詳細な説明

環境変数によるサービスの設定

環境変数はLinuxサービスを設定する標準的な方法です。systemdはそれらを設定するための2つのディレクティブを提供します:インライン値のEnvironment=とファイルから読み込むEnvironmentFile=

Environment=によるインライン変数

[Service]
Environment="NODE_ENV=production"
Environment="PORT=3000"

EnvironmentFile=によるファイルからの読み込み

多数の変数や機密値の場合はファイルを使用します:

[Service]
EnvironmentFile=/etc/myapp/env
EnvironmentFile=-/etc/myapp/env.local

-プレフィックスはファイルをオプションにします。

セキュリティに関する考慮事項

インラインのEnvironment=値はsystemctl showを実行できる人なら誰でも見ることができます。EnvironmentFile=の値はsystemctl showを通じて公開されません。これがシークレットに推奨される方法です。

chmod 600 /etc/myapp/env
chown root:root /etc/myapp/env

ユースケース

パブリック設定(ポート、ログレベル)とシークレット(データベースパスワード、APIキー)の両方を必要とするサービスの設定を、適切なセキュリティ分離で管理する場合に使用します。

試してみる — Systemd Unit File Generator

フルツールを開く