Como carregar a variável de ambiente de um arquivo para um trabalho upstart? -- upstart campo com environment-variables camp askubuntu Relacionado O problema

How to load environment variable from a file for an upstart job?


3
vote

problema

português

Estou escrevendo um trabalho upstart para um serviço configurado usando variáveis ​​de ambiente e muitos deles (& gt; 20).

A maneira como isso foi manipulado até agora era geralmente para executá-lo de um lançador de rubi que usou a gema dotenv do Ruby para carregar o arquivo de configuração. Eu quero substituir o lançador um arquivo straightward upstart (para reduzir a quantidade de código personalizado que preciso manter), mas eu corri para o problema de como configurar todas as variáveis ​​de ambiente necessárias por serviço.

minha opinião inicial foi:

  script    . /etc/default/service-conf    /usr/local/bin/service end script    

Mas apenas a terceirização do arquivo não exporta as variáveis, e eu não quero adicionar um monte de comandos export para o script, principalmente como será completamente incomunável e ilegível bagunça.

english

I'm writing an upstart job for a service that is configured using environment variables, and a lot of them (> 20).

The way this was handled so far was usually to run it from a Ruby launcher that used Ruby's Dotenv gem to load the configuration file. I want to replace the launcher with a straight forward upstart file (to reduce the amount of custom code I need to maintain) but I ran into the problem of how to set up all the environment variables needed by service.

My initial take was:

script    . /etc/default/service-conf    /usr/local/bin/service end script 

but just sourcing the file doesn't export the variables, and I don't want to add a lot of export commands to the script, mainly as it will be completely unmaintainable and unreadable mess.

     

Lista de respostas

7
 
vote
vote
Melhor resposta
 

Existem várias maneiras de enfrentar o problema de exportar variáveis ​​definidas em um arquivo de origem, incluindo todos os tipos de hacks (por exemplo, o estranho abcdefghijklmn5 hack documentado nesta resposta ), mas a maneira mais simples de permitir apenas" marcar variáveis ​​para exportar "bandeira em sua concha, antes de aproximar o ambiente Arquivo.

Aqui está a documentação bash para este recurso - Olhe sob -a .

Enquanto o ABCDEFGHIJKLMNABCDEFGHIJKLMN7 Tag no Upstart não usa Bash como um shell - ele usa a implementação padrão do shell POSIX no Ubuntu, chamada traço , que também suporta este recurso, chamando-o allexport . Então a seção de script upstart deve ler:

  script   set -a   . /etc/default/service-conf   /usr/local/bin/service end script    
 

There are several ways to tackle the problem of exporting variables defined in a source file, including all kinds of hacks (for example, the weird export $(cat file | xargs) hack documented in this answer), but the simplest way to just enable "Mark variables for export" flag in your shell, before sourcing the environment file.

Here is the bash documentation for this feature - look under -a.

While the script tag in upstart does not use Bash as a shell - it uses the default POSIX shell implementation in Ubuntu, called dash which also support this feature, calling it allexport. So the upstart script section should read:

script   set -a   . /etc/default/service-conf   /usr/local/bin/service end script 
 
 

Perguntas relacionadas

0  Instalação correta para o Android Studio no Windows 10 e no Ubuntu Android Config  ( Correct installation for android studio on windows 10 and ubuntu android config ) 
Querer fazer algum desenvolvimento de aplicativos em Android, iOS e Web. Eu instalei o Android Studio no Windows 10 e Ubuntu for Windows 10. Configurando Cord...

814  Como adicionar um diretório ao caminho?  ( How to add a directory to the path ) 
Como adiciono um diretório ao $PATH no Ubuntu e efetue as alterações permanentes? ...

0  Como ler a senha da variável?  ( How to read the password from variable ) 
Eu estou tentando mover meu arquivo para outro sistema que está localizado em algum outro lugar, com este comando: rsync -avrz src destination funcion...

2  Como declarar funções como variáveis  ( How to declare functions as variables ) 
Eu quero declarar variável com a função PWD (), o que vai me dar o caminho atual. Eu quero usar a função PWD () como $ {pwd} variável, algo assim. Como devo e...

9  Como adicionar um User Environment Size Application Launcher ao painel Unity?  ( How to add a user environment aware application launcher to unity panel ) 
Aqui está o meu problema: quando eu procuro no Dash de Unity para o NetBeans e Drag & Amp; Drop-lo para o Unity Launcher, observei que o NetBeans não tem aces...

14  Onde posso encontrar documentação no formato de arquivo / etc / ambiental?  ( Where can i find documentation on the etc environment file format ) 
de Variáveis ​​de Ambiente em todo o sistema : . / etc / ambientais - Este arquivo é especificamente destinado a configurações variáveis ​​de ambiente d...

111  Como faço para definir variáveis ​​de ambiente?  ( How do i set environment variables ) 
Estou tentando configurar o Apache Tomcat no meu PC, e quer que eu configure uma variável de ambiente para CATALINA_HOME . Alguém sabe como fazer isso? ...

0  Como configurar Laravel em variáveis ​​de ambiente  ( How to setup laravel in environment variables ) 
Estou tentando configurar variáveis ​​de ambiente para o Installer Laravel, mas não posso fazer uma configuração adequada. Tentei ambas as variáveis ​​Env $H...

2  Adicionando diretório ao caminho, várias maneiras e diferenças  ( Adding directory to path various ways and differences ) 
Eu vi o tópico como adicionar um diretório ao caminho? Eu já adicionei o diretório no meu caminho editando diretamente o /etc/environment . No entanto, e...

0  Não é possível executar apt-get com proxy mesmo depois de definir as variáveis ​​de ambiente  ( Unable to run apt get with proxy even after setting the environment variables ) 
Eu estava tentando configurar o proxy no meu Lubuntu 14.04. Desde que eu queria usar o nome de usuário e senha para minha autenticação de proxy, optei a NTLM ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.