systemdのユニット定義ファイルには、EnvironmentFileという要素を記述することができます。
こんな感じに。
[Service] ... ... EnvironmentFile=/etc/default/foo
これで対象のサービスが使う環境変数をファイルとして定義して、読み込ませることができます。
ファイルの中身は、「環境変数=値」のように書きます。
MY_ENV_VAR=xxx ...
ところで、たまにファイルパスの先頭に「-」がついているものがあります。
[Service] ... ... EnvironmentFile=-/etc/default/bar
これはなんでしょう?
ちょっと調べてみました。
systemd.exec(5) - Linux manual page
$ man 5 systemd.exec
optionally prefixed with "-", which indicates that if the file does not exist, it will not be read and no error or warning message is logged.
指定したファイルが存在しない場合は読み取られず、エラーも警告も記録されないというオプションみたいです。
ところで、EnvironmentFileで指定するファイルはどこに置くのが良いのでしょう?
Debian系だと「/etc/default」ディレクトリ配下、Red Hat系だと「/etc/sysconfig」配下が良さそうな感じですね。
Debian ポリシーマニュアル / オペレーティングシステム
Debian ポリシーマニュアル / ファイル / 設定ファイル
10.6. systemd のユニットファイルの作成および変更 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
覚えておきましょう。