0

Amazon Opsworks를 사용하여 Postgres와 함께 작동하는 기본 레일 앱을 얻으려고합니다. Opsworks는 현재 Postgres에 대한 내장 지원 기능이 없지만 잘 작성된 것으로 보이는 요리 책을 사용하고 있습니다. 나는 그들 모두를 나의 주문 요리 책에 포크로 've다 : https://github.com/tibbon/custom-opsworks-cookbooksAmazon Opsworks에서 PostgreSQL 사용하기 - database.yml에서 IP 주소 얻기

어쨌든, 나는 지금 막 붙어있어, database.yml 파일로 주 postgres 데이타베이스의 IP 주소를 얻고있다. 그것 여러 백 엔드 지정된 있어야합니다, 어떻게 내 haproxy 서버가 '백엔드'로 모든 레일 서버를 보는 것처럼.

누구나이 작업을 했습니까?

답변

4

내 레일 레이어에 맞춤 JSON을 추가해야했습니다.

이처럼 보였다 :

{ 
    "deploy": { 
    "my-app-name": { 
     "database": { 
     "adapter":"mysql2", 
     "host":"xxx.xx.xxx.xx" 
     } 
    } 
    } 
} 
1

난 당신이 database.yml을을 업데이트하고 애플리케이션 서버를 다시 시작합니다 사용자 정의 조리법을 정의해야합니다 생각합니다.

this guide에서 같은 일 예로서 레디 스 서버를 사용하여 수행됩니다 :

node[:deploy].each do |application, deploy| 
    if deploy[:application_type] != 'rails' 
    Chef::Log.debug("Skipping redis::configure as application #{application} as it is not an Rails app") 
    next 
    end 

    execute "restart Rails app #{application}" do 
    cwd deploy[:current_path] 
    command "touch tmp/restart.txt" 
    action :nothing 
    only_if do 
     File.exists?(deploy[:current_path]) 
    end 
    end 

    redis_server = node[:opsworks][:layers][:redis][:instances].keys.first rescue nil 

    template "#{deploy[:deploy_to]}/current/config/redis.yml" do 
    source "redis.yml.erb" 
    mode "0660" 
    group deploy[:group] 
    owner deploy[:user] 
    variables(:host => (node[:opsworks][:layers][:redis][:instances][redis_server][:private_dns_name] rescue nil)) 
    notifies :run, resources(:execute => "restart Rails app #{application}") 

    only_if do 
     File.directory?("#{deploy[:deploy_to]}/current") 
    end 
    end 
end 

나는 아직 자신이이 시험하지 않았다 그러나 나는 곧 내가 같은이 대답을 업데이트하려고합니다 것으로 예상 곧 내가하는 것처럼.