2013-10-19 7 views
2

AWS Opsworks를 사용하여 Rails App (Ruby 2.0/Rails 3.2)를 호스팅하고 있습니다. 자산 편집 프로세스에서 AssetSync를 사용하여 S3에서 컴파일 된 자산을 자동으로 업로드하고 있습니다. 환경 변수로 자격 증명을 저장하는 데 사용되었습니다.AWS Opsworks로 환경 변수 설정

요리사/요리사와 함께 어떻게 할 수 있습니까?

감사합니다.

답변

1

이 이제 문서에 따라, 응용 프로그램 구성에서 AWS 콘솔에서 직접 수행 할 수 있습니다 http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment

+0

예하지만 충분하지 않습니다! 변수를 Rails 환경에 전달하려면 Chef와 함께 처리해야합니다. 여기 어떻게하는지 설명했습니다 : https://medium.com/@diego_durante/opsworks-rails-and-environment-variables-30c6a143253c#.696grsgg9 –

+0

OP는 어떻게 설정해야하는지 물었습니다. 그들을 다루는 것도 또 다른 주제입니다. – IanBussieres

6

나는 이것이 더 오래된 포스트다는 것을 알고있다, 그러나 나는 이것을 다른 사람을 돕는 경우에 배치하고있다.

가장 쉬운 방법은 실제로 요리사의 전개 후크 (http://docs.opscode.com/resource_deploy.html#deploy-phases) 중 하나를 사용하는 것이 었습니다.

Rails 프로젝트 루트에 'deploy'라는 디렉토리를 추가하십시오. 당신이 OpsWorks 배포 실행할 때

Chef::Log.info("Running deploy/before_restart.rb") 

# map the environment_variables node to ENV 
node[:deploy].each do |application, deploy| 
    deploy[:environment_variables].each do |key, value| 
    Chef::Log.info("Setting ENV[#{key}] to #{value}") 
    ENV[key] = value 
    end 
end 

, 당신은 레일 응용 프로그램 서버 인스턴스 로그에 설정되는 바르 ENV를 볼 수 있어야합니다 : 그것은 코드, before_restart.rb라는 파일을 추가에서

.

+1

이러한 변수는 요리사 프로세스에서만 사용할 수 있습니다. 내 응용 프로그램에 없음 – Erem

+0

위의 프로세스는 내 주 Rail Serers에서 잘 작동합니다. 그러나 내 자신의 스택에서 같은 문제가 발생했지만 Joey Aghion의 delayed_job 커스텀 레시피가 이번에는 - 요리사 로그에 따라 배포 할 때 변수가 주입 되더라도 지연된 작업 스크립트는 선택되지 않습니다 . application.yml 또는 secrets.yml 메소드 중 하나를 시도 할 것입니다. – btsai

+0

Erem이 말한 것처럼, 그런 식으로 Chef에게 변수를 전달하지만, Rails 프로젝트에서 변수를 올바르게 사용할 수 있도록 처리해야합니다. 여기 어떻게 제대로하는지 설명합니다 : https://medium.com/@dieg o_durante/opsworks-rails-and-environment-variables-30c6a143253C# .696grsgg9 –

2

환경 변수 이외의 다른 옵션은 배포시에 변수가 포함 된 파일을 생성 할 수 있다는 것입니다.

예를 들어, Rails 응용 프로그램의 경우 config/secrets.yml은 이러한 파일을 넣기에 적당합니다.

"deploy": { 
    "super_cool_app": { 
     "secrets": { 
     "some_service_id": "foo", 
     "some_password": "bar" 
     } 
    } 
2

당신은 deploy 폴더를 만들 수 있습니다 : 당신이 당신의 비밀을 추가 할 수 있습니다 OpsWorks에서

def create_secrets(secrets, release_path) 
    Chef::Log.info("Creating secrets") 
    file_path = ::File.join(release_path, 'config/secrets.yml') 
    ::File.open(file_path, 'w') do |f| 
    f.write("production:\n") 
    secrets.each do |k,v| 
     f.write(" #{k}: #{v}\n") 
    end 
    end 
end 

node[:deploy].each do |application, deploy| 
    create_secrets(deploy[:secrets], release_path) 
end 

다음 사용자 지정 JSON 스택 : 나는 다음과 같은 내용으로 후크를 배포 before_restart.rb가/배포를 생성 응용 프로그램의 루트는 다음 파일에서 실행, 그 안에이 파일은 모든 D에 실행되는 사전 컴파일 작업

run "cd /srv/www/myapp/current && /usr/local/bin/bundle exec rake assets:precompile" 

을 파일 before_restart.rb을 만들 eployment

출처 :

https://www.youtube.com/watch?v=nHu8fCp9GR4&list=WL&index=7

0

는 이미 여기에 대답 AWS OpsWorks Environment variables not working

OpsWorks 대시 보드에서 선언 된 모든 환경 변수를 Chef에 전달할 수 있다는 것을 이해하는 것이 중요합니다. 그런 다음이 변수를 다음과 같이 처리해야합니다. 그 (것)들이 레일 환경에 이용 가능하게하는 요리사 조리법.

여기서 당신은 찾고있는 것을 찾을 수 있습니다 : https://medium.com/@diego_durante/opsworks-rails-and-environment-variables-30c6a143253c#.696grsgg9