У меня есть много переменных окружения, которые необходимы для выполнения моей работы с рубиновыми граблями. Эта работа будет контролироваться systemd.
Как я могу экспортировать все переменные среды?
А также экспортировать их таким образом, чтобы только моя служба systemd увидит их, если это возможно.
Вот мой сервис, в котором есть только одна переменная окружения:
$ cat /etc/systemd/system/my_service.service
[Unit]
After=syslog.target
Requires=mysql.service
[Service]
WorkingDirectory=/home/ubuntu/my_app/app1
ExecStart=/bin/bash -lc 'source /home/ubuntu/.profile && bundle exec rake jobs:job1'
Restart=on-abort
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=app1_bg_jobs
User=ubuntu
Group=ubuntu
Environment=RAILS_ENV=staging
[Install]
WantedBy=multi-user.target
Я не хочу использовать ключ Environment
потому что у меня много env. переменные
и найдите директиву EnvironmentFile, она должна делать то, что вы ожидаете, пожалуйста, посмотрите отрывок ниже
EnvironmentFile=
Similar to Environment= but reads the environment variables from a text file. The text file should contain new-line-separated variable
assignments. Empty lines, lines without an "=" separator, or lines starting with ; or # will be ignored, which may be used for
commenting. A line ending with a backslash will be concatenated with the following one, allowing multiline variable definitions. The
parser strips leading and trailing whitespace from the values of assignments, unless you use double quotes (").
The argument passed should be an absolute filename or wildcard expression, 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. This option may be specified more than once in
which case all specified files are read. If the empty string is assigned to this option, the list of file to read is reset, all prior
assignments have no effect.
The files listed with this directive will be read shortly before the process is executed (more specifically, after all processes from
a previous unit state terminated. This means you can generate these files in one unit state, and read it with this option in the
next).
Settings from these files override settings made with Environment=. If the same variable is set twice from these files, the files will
be read in the order they are specified and the later setting will override the earlier setting.