Supervisord: como anexar a $ PATH

23

Não consigo descobrir como anexar ao caminho padrão em uma configuração do programa supervisord.

Eu posso redefinir o caminho:

environment=PATH="/home/site/environments/master/bin"

Mas quando eu tento:

environment=PATH="/home/site/environments/master/bin:$PATH"

Vejo que a supervisora ​​não avalia $PATH.

O Google não ajudou muito nisso, por algum motivo, não acredito que sou a primeira pessoa a precisar disso.

O Supervisord deve ter suporte para isso, tem alguma idéia do que é?

Prody
fonte
1
@ascobol Não, eu codificado a necessidade caminho que, por enquanto
Prody
2
supervisordnão execute o shell para pré-processar variáveis ​​no arquivo de configuração; portanto, você não pode usar expressões do shell para expandir variáveis. Embora exista um patch que permita fazer %($PATH)isso, ele foi discutido nas listas de discussão em 2011, mas o AFAIK ainda não está incluído na árvore de origem da linha principal. Como solução alternativa, você pode criar um script que irá configurar o ambiente e executar um comando fornecido nos argumentos. Então você acabou de executar o script a partir do supervisordcomocommand /usr/local/bin/setup_env_master.sh program_name arguments
Dmitry Vasilyanov
1
Existe uma desvantagem significativa na solução do invólucro de shell - quando o supervisor tenta interromper o processo usando INT ou KILL, o sinal será recebido pelo script bash e não pelo programa de empacotamento real. Isso pode levar (e leva no meu caso) a processos pendentes.
stoiczek
@stoiczek problema fácil de resolver. Use exec no final do script bash, não execute apenas o comando regularmente. Então exec server --args. Você vê isso em trabalhos iniciados invariavelmente.
CameronNemo 01/07

Respostas:

1

Revi a documentação e concordo com Dmitry.

A resposta atual é: supervisor não faz esse diretório, mas a criação de um script de wrapper ajudará.

Theuni
fonte