Use o ENV Luke! (também conhecido como: simular o ENV no OpsWorks usando Chef e Dotenv)

OpsWorks é um software impressionante, mas às vezes não tem a zona de conforto que nós, desenvolvedores, amamos tanto.
Um recurso que realmente sinto falta é a capacidade de configurar meu aplicativo usando variáveis ​​ENV.
Não conheço nenhuma maneira fácil (ou seja, como o Heroku) de criar variáveis ​​de ambiente no OpsWorks que o aplicativo possa consumir.

Felizmente, OpsWorks é baseado no Chef e pode ser personalizado da maneira que você quiser.
Esteja avisado, nem sempre é um caminho fácil, é necessário conhecimento básico do Chef, a interface é bastante complicada, mas no final dá conta do recado.

Então, estávamos dizendo meio ambiente !
Sabemos que o ambiente não é compatível com OpsWorks, então o que realmente precisamos é simulá-lo de alguma forma.
Uma solução comum entre desenvolvedores Rails, é a gem Dotenv que carrega o arquivo .envna raiz do seu aplicativo e cria as chaves correspondentes no ENVobjeto.

Vou assumir que você já criou um Stack no OpsWorks com uma camada de aplicativo Rails.

Lado dos trilhos

Adicione a gema Dotenv ao seu Gemfile

gem 'dotenv-rails'

executar pacote

$ bundle

o mais rápido possível, carregue o ambiente através do Dotenv

# application.rb
require
File.expand_path('../boot', __FILE__)
require
'dotenv'
Dotenv.load

envie o novo código para o Github

OpsWorks side

No painel Stack, clique em stack settings, selecione sim para , escolha Git como tipo de repositório e insira como a URL do repositório. Se você quiser usar um repositório privado, também precisará inserir a chave privada SSH. Escolha o seu branch ( neste caso) e adicione o seguinte JSON na caixa Use custom Chef cookbookshttps://github.com/mikamai/opsworks-dotenv

masterCustom JSON

{
"deploy":{
"your_app_name":{
"symlink_before_migrate":{
".env" : ".env"
},
"app_env": {
"YOUR_ENV_KEY": "KEY_VALUE",
"ANOTHER_ENV_KEY": "SECOND_VALUE"
}
}
}
}

Não se esqueça da symlink_before_migratechave, ela diz ao Chef para vincular o arquivo criado na pasta de implantação compartilhada à pasta de implantação atual, para que o aplicativo Rails possa pegá-lo. Para recuperar o valor, vá para a página Aplicativos no console da AWS, clique no nome do aplicativo que deseja configurar e, a partir daí, copie a propriedade do aplicativo. .env

your_app_nameshort name

A última etapa é instruir o Chef a executar sua receita em cada implantação.
Clique no link de receitas na seção da camada Rails

Camadas OpsWorks

Adicione a receita personalizada e clique no ícone de adição (o nome da receita é exato rails::dotenv)

Receitas personalizadas

Deve ser assim

Receitas personalizadas adicionadas

Clique em salvar no canto inferior direito e atualize seus livros de receitas personalizados clicando em Stacke, em seguida, Run command

Atualizar livros de receitas personalizados

Esta etapa deve ser realizada sempre que uma receita no livro de receitas personalizado for adicionada ou atualizada.

Agora você pode implantar seu aplicativo e desfrutar de seu novo ENV.

TL; DR : adicione a Dotenvgema, clone https://github.com/mikamai/opsworks-dotenv, adicione-a como Livro de receitas do Chef personalizado,
execute a rails::dotenv receita em cada implantação, seja feliz!