ファイルから変数を使用するように systemctl に指示する

ファイルから変数を使用するように systemctl に指示する

私はsystemctlアプリを起動して維持するために を使用しています。以下は私の.serviceファイルです。 に注意してくださいEnvironment='METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}'。これは秘密鍵を保存する場所であり、この場所には表示しないようにします。

私の質問は、systemctlに特定の場所にあるファイルから読み取るように指示するにはどうすればいいかということです。

[Service]
ExecStart=/usr/bin/node /home/wow-doge/experimental/wow_doge_builds/bundle/main.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=logdoge
#User=root
#Group=root
Environment=NODE_ENV=production
Environment=PORT=3000
Environment=HTTP_FORWARDED_COUNT=1
Environment=MONGO_URL=mongodb://127.0.0.1:27017/wow-doge
Environment=ROOT_URL=https://localhost
Environment='METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}'

[Install]
WantedBy=multi-user.target

答え1

出典https://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html#environmentfile-directive

EnvironmentFile は Environment ディレクティブに似ていますが、テキスト ファイルから環境変数を読み取ります。テキスト ファイルには、改行で区切られた変数の割り当てが含まれている必要があります。

例:

[Service]
EnvironmentFile=/etc/envfile

の内容/etc/envfile

NODE_ENV=production
PORT=3000
HTTP_FORWARDED_COUNT=1
MONGO_URL=mongodb://127.0.0.1:27017/wow-doge
ROOT_URL=https://localhost
METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}

関連情報