From: Tom Hughes Date: Thu, 1 Nov 2018 19:06:21 +0000 (+0000) Subject: Run a job queue runner for each rails instance X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/e0eb12fed2fb98b8930c4e2d60b43d2b9fa3e2b5?hp=9a075214d2f85073acad2e4dac005bdf08aecd62;ds=sidebyside Run a job queue runner for each rails instance Closes #201 --- diff --git a/cookbooks/dev/recipes/default.rb b/cookbooks/dev/recipes/default.rb index a7cbc5f51..613305d21 100644 --- a/cookbooks/dev/recipes/default.rb +++ b/cookbooks/dev/recipes/default.rb @@ -203,6 +203,22 @@ if node[:postgresql][:clusters][:"9.5/main"] mode 0o755 end + ruby_version = node[:passenger][:ruby_version] + + systemd_service "rails-jobs@" do + description "Rails job queue runner" + type "simple" + user "apis" + working_directory "/srv/%i.apis.dev.openstreetmap.org/rails" + exec_start "/usr/local/bin/bundle#{ruby_version} exec rake jobs:work" + restart "on-failure" + private_tmp true + private_devices true + protect_system "full" + protect_home true + no_new_privileges true + end + systemd_service "cgimap@" do description "OpenStreetMap API Server" type "forking" @@ -258,7 +274,7 @@ if node[:postgresql][:clusters][:"9.5/main"] end rails_port site_name do - ruby node[:passenger][:ruby_version] + ruby ruby_version directory rails_directory user "apis" group "apis" @@ -282,6 +298,14 @@ if node[:postgresql][:clusters][:"9.5/main"] notifies :restart, "rails_port[#{site_name}]" end + service "rails-jobs@#{name}" do + action [:enable, :start] + supports :restart => true + subscribes :restart, "rails_port[#{site_name}]" + subscribes :restart, "systemd_service[#{name}]" + only_if "fgrep -q delayed_job #{rails_directory}/Gemfile.lock" + end + if details[:cgimap_repository] git cgimap_directory do action :sync diff --git a/cookbooks/web/recipes/frontend.rb b/cookbooks/web/recipes/frontend.rb index 7ec03754a..b2ba01832 100644 --- a/cookbooks/web/recipes/frontend.rb +++ b/cookbooks/web/recipes/frontend.rb @@ -47,3 +47,10 @@ template "/etc/logrotate.d/apache2" do group "root" mode 0o644 end + +service "rails-jobs" do + action [:enable, :start] + supports :restart => true + subscribes :restart, "rails_port[www.openstreetmap.org]" + subscribes :restart, "systemd_service[rails-jobs]" +end diff --git a/cookbooks/web/recipes/rails.rb b/cookbooks/web/recipes/rails.rb index ea9a58c4e..be51e2d8c 100644 --- a/cookbooks/web/recipes/rails.rb +++ b/cookbooks/web/recipes/rails.rb @@ -47,12 +47,13 @@ template "/etc/cron.hourly/passenger" do mode 0o755 end +ruby_version = node[:passenger][:ruby_version] rails_directory = "#{node[:web][:base_directory]}/rails" piwik = data_bag_item("web", "piwik") rails_port "www.openstreetmap.org" do - ruby node[:passenger][:ruby_version] + ruby ruby_version directory rails_directory user "rails" group "rails" @@ -93,6 +94,20 @@ rails_port "www.openstreetmap.org" do csp_enforce true end +systemd_service "rails-jobs" do + description "Rails job queue runner" + type "simple" + user "rails" + working_directory rails_directory + exec_start "/usr/local/bin/bundle#{ruby_version} exec rake jobs:work" + restart "on-failure" + private_tmp true + private_devices true + protect_system "full" + protect_home true + no_new_privileges true +end + package "libjson-xs-perl" template "/usr/local/bin/cleanup-rails-assets" do