Localização para colocar o serviço systemd EnvironmentFile ao criar o pacote debian

2

No momento, estou reescrevendo upstart jobs para usar systemd e queria saber:

Onde está o local "padrão" para um EnvironmentFile ?

Ele poderia entrar em /etc/environment

Pode ser com todos os outros arquivos de serviço em /etc/systemd/service , /run/systemd/system ou /lib/systemd/system , mas não vejo nenhum outro EnvironmentFile s nesses locais para nenhum outro Service .

Eu também debati /etc/default/ ou /etc/<PACKAGE_NAME>

Não há nenhum lugar "convencional" documentado para colocá-lo. Muitos dos exemplos que vi parecem usar /tmp/<FILE_NAME> , o que não faz sentido, pois /tmp é apagado na reinicialização, e esses arquivos precisam persistir para que possam ser referenciados sempre que o Service for iniciado ou reiniciado.

Antecedentes: Estou gerando o EnvironmentFile no tempo de pré-instalação (com scripts do mantenedor) antes de o pacote debian ser instalado, e sei que o arquivo deve estar disponível toda vez que o serviço for iniciado / reiniciado.

    
por Wimateeka 22.01.2018 / 14:08

1 resposta

3

O pessoal do systemd não gosta de arquivos de ambiente.

Então não há um.

Várias pessoas do sistema estão registradas, ao longo dos anos, dizendo que os arquivos de ambiente são um mecanismo que eles nunca deveriam ter dado ao systemd em primeiro lugar.

O mecanismo systemd nativo é, afinal, o próprio arquivo da unidade de serviço, em que as variáveis de ambiente são configuradas com Environment= keys. Personalizar o ambiente de um serviço com variáveis definidas pelo administrador ou específicas da máquina é, na visão deles, uma questão de soltar os arquivos snippet .conf para unidades, que definem outras variáveis de ambiente com mais Environment= keys.

(But honestly, there's really no point in trying to dynamically convert stuff into a file that is suitable for EnvironmentFile=. […] Also /etc/sysconfig is a Redhatism that should really go away, the whole concept is flawed. Adding a new /run/sysconfig/ certainly makes that even worse.)

I probably should never have added EnvironmentFile= in the first place. Packagers misunderstand that unit files are subject to admin configuration and should be treated as such, and that spliting out configuration of unit files into separate EnvironmentFiles= is a really non-sensical game of unnecessary indirection.

- Lennart Poettering (2015-12-09). Consulta sobre "EnvironmentFile" . systemd-devel.

Use of EnvironmentFile= is pretty much always a bad idea, and we probably should never have added that, since it invites packagers to reintroduce the /etc/default/ and /etc/sysconfig/ madness we try to remove.
- Lennart Poettering (2015-07-22). considere ter variáveis para um arquivo de unidade inteiro . bug systemd # 618. GitHub.

Conteúdo de bônus

No mundo daemontools, nós temos diretórios de ambiente , é claro, leia com o comando envdir / s6-envdir . Embora não seja um padrão nem um requisito dos daemontools, uma convenção que pode ser usada, alinhada com algumas ferramentas, é que o diretório do ambiente é denominado env e reside no diretório de serviço ao lado o programa run e outras coisas.

    
por 23.01.2018 / 13:06