Укажите systemctl, чтобы использовать переменные из файла

313
blueren

Я использую, 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 
0

1 ответ на вопрос

2
Magnus

Взято из 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!"} 
Отлично, это сработало как задумано! blueren 6 лет назад 0
Также `man systemd.directives` перечисляет все директивы. Поиск "environment" в этом списке также отображает `EnvironmentFile =`. Mark Stosberg 6 лет назад 0

Похожие вопросы