0

Я пытаюсь получить основное приложение рельсов, работающее с Postgres, используя Amazon Opsworks. Opsworks не имеет встроенной поддержки Postgres на данный момент, но я использую некоторые поваренные книги, которые я нашел, которые, кажется, хорошо написаны. Я разветвил их всех в своих поваренных книгах по адресу: https://github.com/tibbon/custom-opsworks-cookbooksИспользование Postgresql с Amazon Opsworks - Получение IP-адреса в database.yml

В любом случае, когда я застрял в данный момент, я получаю IP-адрес базы данных postgres базы данных в файле database.yml. Это кажется, что должно быть указано несколько обратных концов, вроде как мой сервер haproxy видит все серверы рельсов как «backends».

Кто-нибудь получил эту работу?

ответ

4

Мне пришлось добавить некоторый пользовательский JSON в мой Rails-слой.

выглядел следующим образом:

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

Я считаю, вы должны определить собственный рецепт, который обновляет database.yml и перезапускает сервер приложений.

В this guide то же самое делается с помощью сервера Redis в качестве примера:

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 

Я не проверял это для себя, но пока я верю, что скоро я буду стараться обновлять этот ответ как скоро, как и я.