Variáveis de ambiente do OpsWorks disponíveis para CLI do PHP

1

Estamos implantando um aplicativo baseado no Laravel na AWS usando o OpsWorks. Definimos variáveis de ambiente por meio do console do OpsWorks e elas são vistas corretamente pelo Apache. No entanto, ao executar tarefas da CLI, como artisan , elas não são definidas.

Entendo que isso se deve às variáveis de ambiente que estão sendo definidas nos arquivos de configuração do host virtual do Apache. Eu pensei que eu poderia corrigir o problema, executando um gancho de implantação que ecoa essas variáveis e acrescenta-as a /etc/environment , mas isso não funciona (e mesmo se isso acontecesse, seria inacreditavelmente fraco).

Existe alguma outra maneira de conseguir isso? O OpsWorks permite esse requisito específico?

Obrigado.

    
por cafonso 16.03.2015 / 23:27

2 respostas

1

Veja como conseguimos resolver isso (embora não seja o ideal, faz o truque):

  • Use getenv() para acessar todas as variáveis de ambiente: o Apache não as verá se estiver usando $_ENV .
  • Use um gancho de implantação do OpsWorks para gravar todas as variáveis de ambiente em .env.php , o arquivo de configuração do Laravel para o ambiente de produção. Variáveis de ambiente estarão disponíveis para o código de gancho de implementação via node[:deploy]['<short_app_name>'][:environment_variables][:<VAR_NAME>] .
  • Executar comandos artisan especificando o ambiente de produção: php artisan --env=production --force <command-to-be-run> .

Estamos usando principalmente o acima para executar migrações da primeira instância na fila de implantação.

    
por 17.03.2015 / 21:08
0

Se você também estiver usando livros de receitas personalizados do Chef, poderá definir as propriedades das variáveis JSON ou OpsWorks Application em tempo de execução com um modelo Chef. O abaixo é um exemplo de config.php para uma instalação do Moodle e assume que você tem um aplicativo chamado webapp com atributos configurados como moodle_dbhost, moodle_dbname, moodle_dbuser etc.

CFG->dbtype    = 'pgsql';
$CFG->dblibrary = 'native';
$CFG->dbhost    = '<%= node['deploy']['webapp']['environment']['moodle_dbhost'] %>';
$CFG->dbname    = '<%= node['deploy']['webapp']['environment']['moodle_dbname'] %>';
$CFG->dbuser    = '<%= node['deploy']['webapp']['environment']['moodle_dbuser'] %>';
$CFG->dbpass    = '<%= node['deploy']['webapp']['environment']['moodle_dbpwd'] %>';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => '<%= node['deploy']['webapp']['environment']['moodle_dbport'] %>',
  'dbsocket' => 0,
);

$CFG->wwwroot   = 'http://example.com/moodle/';
$CFG->dataroot  = '/var/www/moodle-data/';
    
por 27.10.2015 / 16:53