Comandos ebextensions específicos do ambiente
Eu tenho um aplicativo de inicialização por mola para o qual preciso especificar servidor e porta de grafite (para enviar métricas). Para que isso funcione, eu tenho que instalar e configurarstatsd
. Eu faço isso usando oebextensions
Arquivo.
commands:
01_nodejs_install:
command: sudo yum -y install nodejs npm --enablerepo=epel
ignoreErrors: true
02_mkdir_statsd:
command: mkdir /home/ec2-user/statsd
ignoreErrors: true
03_fetch_statsd:
command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
ignoreErrors: true
04_change_example_config:
command: "cat exampleConfig.js | sed 's/2003/<graphite-port>/g' | sed 's/graphite.example.com/<my-graphite-server>/g' > config.js"
cwd: /home/ec2-user/statsd
05_run_statsd:
command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null &
cwd: /home/ec2-user/statsd
O problema com esta configuração é que eu posso especificar apenas 1 servidor de grafite aqui para todos os ambientes.
Então eu decidi mover os comandos 04 e 05 paracontainer_commands
. Estou pensando em definir uma variável de ambiente chamadaENV_NAME
usando o console / UI do beanstalke defina-o comodev
, qa
ouprod
de acordo com o meio ambiente. Então eu posso usartest
opção decontainer_commands
para executar comandos 04 e 05 apenas para um ambiente específico com base nesteENV_NAME
.
Portanto, meu problema é: como posso usar o console da AWS para definir variáveis de ambiente? Tentei usar o console Benastalk para definir minha variável, conforme explicado na documentaçãoaqui mas não funcionou. eu tambémencontrado (consulte a resposta com 5 upvotes) que esse método define apenas propriedades da JVM e não variáveis ENV.
Não consigo definir variável de ambiente usandoebextensions
porque então eu vou ter o mesmo problema - não é possível definir diferentes ambientes para diferentes ambientes :)
Então, preciso de ajuda com:
Colocou oENV_NAME
variável de ambiente usando a interface do usuário do beanstalk.Ou
Sugira uma maneira de usarENV_NAME
propriedade do sistema emcontainer_commands
para condicionar a execução ou não do comando com base no valor deENV_NAME
.E caso você saiba uma maneira mais simples / melhor de especificar diferentes servidores Graphite para diferentes ambientes, sinta-se à vontade para participar.