3

У кого-нибудь есть опыт/успех, используя драгоценный камень на aws opsworks? Есть хороший рецепт? Могу ли я поместить этот рецепт на отдельный слой и связать один экземпляр с этим дополнительным слоем? Или есть лучший способ сделать это? Благодаря!!!Всякий раз, когда драгоценный камень на aws opsworks

EDIT:

Мы закончили делать это немного по-другому ...

Код:

Не могу опубликовать реальный код, но это так:

в развернуть/before_migrate.rb:

[:schedule].each do |config_name| 
    Chef::Log.info("Processing config for #{config_name}") 
    begin 
    template "#{release_path}/config/#{config_name}.rb" do |_config_file| 
     variables(
     config_name => node[:deploy][:APP_NAME][:config_files][config_name] 
    ) 
     local true 
     source "#{release_path}/config/#{config_name}.rb.erb" 
    end 
    rescue => e 
    Chef::Log.error e 
    raise "Error processing config for #{config_name}: #{e}" 
    end 
end 

в развернуть/after_restart.rb:

execute 'start whenever' do 
    cwd release_path 
    user node[:deploy][:APP_NAME][:user] || 'deploy' 
    command 'bundle exec whenever -i APP_NAME' 
end 

в конфигурации/schedule.rb.erb:

<% schedule = @schedule || {} %> 

set :job_template, "bash -l -c 'export PATH=/usr/local/bin:${PATH} && :job'" 
job_type :runner, 'cd :path && bundle exec rails runner -e :environment ":task" :output' 
job_type :five_runner, 'cd :path && timeout 300 bundle exec rails runner -e :environment ":task" :output' 
set :output, 'log/five_minute_job.log' 
every 5.minutes, at: <%= schedule[:five_minute_job_minute] || 0 %> do 
    five_runner 'Model.method' 
end 
+1

Мы кончались обработки это следующим образом: Добавить значение в стеке json, чтобы указать, какой хост должен запускать каждый раз cron, и по умолчанию rails_app1 Попробуйте привязку развертывания в проекте rails, который запускается всякий раз только на этом хосте. Это ставит cron на первый хост или в зависимости от того, что мы укажем, и довольно легко настроить и управлять. У нас также есть файл erb, который оценивается по расписанию. Rb, чтобы мы могли устанавливать различные параметры, такие как время, когда что-то запускается каждый день или в минуту, когда он запускается каждый час. Этот файл erb также оценивается в методах развертывания. – nroose

+0

Если возможно, не могли бы вы поделиться кодом, пожалуйста? – jwako

+0

Да, пожалуйста, попробуйте, более подробный совет будет потрясающим. –

ответ

7

У нас есть всегда, когда поваренная книга в нашем репо мы используем, что вы были бы более чем желательно здесь: https://github.com/freerunningtech/frt-opsworks-cookbooks. Я предполагаю, что вы знакомы с добавлением пользовательских кулинарных книг в свои стеки opsworks.

Мы вообще запустить его на своем собственном уровне, который также включает в себя рельсы поваренные книги, необходимые для развертывания приложений (в то время как не приложение-сервер):

  • Настройка: Рельсы :: настроить
  • Deploy: развертывание :: рельсы, когда
  • Undeploy: развертывание :: рельсы-Undeploy

Однако, мы обычно также развернуть этот экземпляр в качестве сервера приложений, то есть мы в конечном итоге обслуживать запросы от го e box, который мы используем, когда бы то ни было.

Существует один «Гоча», в том, что вы должны установить свой путь в окр в верхней части schedule.rb, как это:

env :PATH, ENV['PATH'] 
+0

Как вы настроили запуск рецепта только на один из экземпляров слоя в? Я думаю, что вы используете опцию '--roles', но все ли это хорошо? В приложении rails 'layers' совпадают с' rails-app' через экземпляры. – jwako

Смежные вопросы