Como importo dados da instância / usuário do Amazon EC2 para os ambientes dos serviços na minha máquina?

0

Estou usando o Ubuntu 14.04 e 16.10; então meu sistema init pode ser upstart ou systemd.

Coisas como Como definir uma variável de ambiente no Amazon EC2 no Stack Overflow mostram como alguém busca uma ID de instância usando curl , em seguida, busca tags de instância usando aws ec2 describe-tags e as importa como variáveis de ambiente em um shell interativo ou em um script de shell. Uma das respostas também mostra como alguém executa esses dados com jq .

Tudo isso é bom, mas não preciso de variáveis configuradas em um shell script ou em um shell interativo. Ter um script de shell que é source d como nessas respostas não é bom para mim, pois não há um shell envolvido em onde eu preciso definir essas coisas.

Eu preciso deles configurados nos ambientes dos processos do daemon que são iniciados a partir do systemd ou do upstart. No caso do systemd, em particular, os arquivos da unidade de serviço não são scripts de shell em todos os . Para definir variáveis de ambiente, uma pessoa coloca coisas como Environment= no arquivo da unidade.

Então, como posso criar o último link na cadeia? Com o que está no Stack Overflow, posso chegar até a ler os dados e criar strings var=val semelhantes a ambientes a partir deles. (Na verdade, estou lendo metadados de instâncias e dados do usuário , mas o princípio é o mesmo - eu puxo o material com curl e, em seguida, faço o jq e outro pós-processamento para fazer var=val dele.)

Como faço para forjar o elo final na cadeia e obter essas strings nos ambientes de serviços específicos executados por upstart e systemd?

    
por xrage 02.01.2017 / 09:11

1 resposta

0

Se você puder obter as strings em um arquivo na forma de atribuições de variável de ambiente , por exemplo

SOME_NAME=some_value

então talvez você possa usar a configuração EnvironmentFile= no arquivo da unidade. Mais detalhes em man systemd.exec .

Você sempre pode substituir o serviço que está iniciando por um script que primeiro origina um arquivo com as configurações da variável de ambiente e, em seguida, exec s o serviço original. Isso deve funcionar também com o upstart.

Por exemplo:

#!/bin/sh
. /some/where/environment-variable-settings-file
exec original-service "$@"
    
por 06.02.2018 / 09:57