Zeigen Sie systemctl, um Variablen aus einer Datei zu verwenden

389
blueren

Ich benutze systemctl, um meine App zu starten und am Leben zu erhalten. Unten ist meine .serviceDatei. Beachten Sie die Environment='METEOR_SETTINGS={"privateKey": "ohnoyouseemyprivatekey!"}'. Hier werde ich private Schlüssel speichern und ich möchte es an dieser Stelle nicht sichtbar machen.

Meine Frage ist: Wie genau frage ich systemctl, ob es aus einer Datei an einem bestimmten Ort in gelesen werden soll?

[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 Antwort auf die Frage

2
Magnus

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

EnvironmentFile ähnelt der Umgebungsanweisung, liest jedoch die Umgebungsvariablen aus einer Textdatei. Die Textdatei sollte durch neue Zeilen getrennte Variablenzuweisungen enthalten.

Beispiel:

[Service] EnvironmentFile=/etc/envfile 

Inhalt von /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!"} 
Perfekt, das hat wie vorgesehen funktioniert! blueren vor 6 Jahren 0
Auch "man systemd.directives" listet alle Anweisungen auf. Suchen Sie in dieser Liste nach "Umgebung", wird auch "EnvironmentFile =" angezeigt. Mark Stosberg vor 6 Jahren 0