passar variáveis de ambiente para serviços iniciados com systemctl

3

Eu tenho um serviço nodeJS construído usando o NodeJs. Este serviço requer que algumas variáveis de ambiente sejam passadas para ele. Além disso, criei um arquivo de unidade systemd para iniciá-lo a partir do systemctl. Por algumas razões estranhas, o serviço, quando iniciado com o systemctl, não lê as variáveis de ambiente. Por exemplo, uma variável de ambiente é o HOST, que contém o IP ao qual o aplicativo de velas será vinculado. No entanto, se eu iniciar o serviço com sails lift ou node app.js , ele lerá as variáveis de ambiente. Aqui está o arquivo da unidade:

[Unit]
Description=project

[Service]
ExecStart=/usr/bin/node /mnt/project/app.js
Restart=always
StandardOutput=syslog

[Install]
WantedBy=multi-user.target

Eu tentei de tudo. Eu adicionei as variáveis de ambiente ao / etc / environment e apontei o arquivo de unidade para ele, também adicionei-as ao arquivo de unidade, mas nada funcionou.

    
por Nicolas El Khoury 28.07.2017 / 16:12

1 resposta

4

Isso acontece porque uma unidade no systemd é encapsulada a partir do resto do sistema. Você tentou configurá-lo diretamente no arquivo da unidade assim?

% bl0ck_qu0te%

As variáveis FOO e BAR estão disponíveis na sua unidade. Por exemplo, se este for o meu ExecuteStart:

% bl0ck_qu0te%

Com a opção Environment acima, isso resultaria na seguinte saída:

% bl0ck_qu0te%

Uma alternativa seria fazê-lo através de um arquivo de configuração do ambiente. Para isso, você pode ler a documentação do fedora:

link

Este link contém alguns exemplos úteis com o docker:

link

    
por kuwiano 28.07.2017 / 22:34