Defina a variável de ambiente para todos os serviços em execução no systemd

Defina a variável de ambiente para todos os serviços em execução no systemd

Atualmente estou trabalhando em uma ferramenta de implantação que configurará variáveis ​​de ambiente em máquinas CentOS7. Da forma como está, minha ferramenta está ciente de quais variáveis ​​precisam ser configuradas, mas não está ciente de quais serviços as utilizarão, pois esses serviços podem nem estar instalados ainda.

Então os desafios são:

  1. No momento em que minha ferramenta está em execução, não sei quais serviços precisam de quais variáveis ​​de ambiente (e, portanto, não sabemos em qual .servicearquivo colocá-los)

  2. Os serviços são executados como não interativos e sem login, até onde eu sei, então as outras opções de obter uma espécie de variável de ambiente 'global' não parecem uma solução para isso (ou seja, profile.d e esse tipo de coisa)

Existe outra maneira de persistir essas variáveis ​​sem precisar saber qual serviço fará referência a elas?

Responder1

No /etc/systemd/system.conf, você pode usar DefaultEnvironment=para definir variáveis ​​de ambiente passadas para todos os serviços.

Você pode ler sobre os detalhes em man systemd-system.conf.

Responder2

E esta solução: systemctl set-environment LD_LIBRARY_PATH=/usr/local/lib?

informação relacionada