X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/34ff9fd8c98de023c344dada734e3e9897d132fe..1ba789e232a546639baaf55c49a14eb474647e88:/cookbooks/web/resources/rails_port.rb diff --git a/cookbooks/web/resources/rails_port.rb b/cookbooks/web/resources/rails_port.rb index 56fd163c3..067c1334c 100644 --- a/cookbooks/web/resources/rails_port.rb +++ b/cookbooks/web/resources/rails_port.rb @@ -8,7 +8,7 @@ # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -28,7 +28,7 @@ property :ruby, String, :default => "2.3" property :directory, String property :user, String property :group, String -property :repository, String, :default => "git://git.openstreetmap.org/rails.git" +property :repository, String, :default => "https://git.openstreetmap.org/public/rails.git" property :revision, String, :default => "live" property :run_migrations, [TrueClass, FalseClass], :default => false property :email_from, String, :default => "OpenStreetMap " @@ -65,6 +65,7 @@ property :mapquest_key, String property :mapzen_valhalla_key, String property :thunderforest_key, String property :totp_key, String +property :csp_enforce, [TrueClass, FalseClass], :default => false property :csp_report_url, String property :piwik_configuration, Hash @@ -85,22 +86,30 @@ action :create do libxml2-dev libxslt1-dev libmemcached-dev + libffi-dev + ] + + package %w[ + pngcrush + advancecomp + optipng + pngquant + jhead + jpegoptim + gifsicle + libjpeg-turbo-progs ] gem_package "bundler#{new_resource.ruby}" do package_name "bundler" - version "1.3.5" + version "1.16.2" gem_binary "gem#{new_resource.ruby}" options "--format-executable" end - file "/usr/lib/ruby/1.8/rack.rb" do - action :delete - end - - declare_resource :directory, "/usr/lib/ruby/1.8/rack" do - action :delete - recursive true + gem_package "bundler#{new_resource.ruby}" do + package_name "pkg-config" + gem_binary "gem#{new_resource.ruby}" end declare_resource :directory, rails_directory do @@ -116,9 +125,10 @@ action :create do user new_resource.user group new_resource.group notifies :run, "execute[#{rails_directory}/Gemfile]" + notifies :run, "execute[#{rails_directory}/app/assets/javascripts/i18n]" notifies :run, "execute[#{rails_directory}/public/assets]" notifies :delete, "file[#{rails_directory}/public/export/embed.html]" - notifies :run, "execute[#{rails_directory}]" + notifies :restart, "passenger_application[#{rails_directory}]" end declare_resource :directory, "#{rails_directory}/tmp" do @@ -142,24 +152,24 @@ action :create do :name => new_resource.database_name, :username => new_resource.database_username, :password => new_resource.database_password - notifies :run, "execute[#{rails_directory}]" + notifies :restart, "passenger_application[#{rails_directory}]" end application_yml = edit_file "#{rails_directory}/config/example.application.yml" do |line| line.gsub!(/^( *)server_protocol:.*$/, "\\1server_protocol: \"https\"") - line.gsub!(/^( *)server_url:.*$/, "\\1server_url: \"#{name}\"") + line.gsub!(/^( *)server_url:.*$/, "\\1server_url: \"#{new_resource.site}\"") line.gsub!(/^( *)#publisher_url:.*$/, "\\1publisher_url: \"https://plus.google.com/111953119785824514010\"") line.gsub!(/^( *)support_email:.*$/, "\\1support_email: \"support@openstreetmap.org\"") if new_resource.email_from - line.gsub!(/^( *)email_from:.*$/, "\\1email_from: \"#{email_from}\"") + line.gsub!(/^( *)email_from:.*$/, "\\1email_from: \"#{new_resource.email_from}\"") end line.gsub!(/^( *)email_return_path:.*$/, "\\1email_return_path: \"bounces@openstreetmap.org\"") - line.gsub!(/^( *)status:.*$/, "\\1status: :#{status}") + line.gsub!(/^( *)status:.*$/, "\\1status: :#{new_resource.status}") if new_resource.messages_domain line.gsub!(/^( *)#messages_domain:.*$/, "\\1messages_domain: \"#{new_resource.messages_domain}\"") @@ -252,6 +262,10 @@ action :create do line.gsub!(/^( *)#totp_key:.*$/, "\\1totp_key: \"#{new_resource.totp_key}\"") end + if new_resource.csp_enforce + line.gsub!(/^( *)csp_enforce:.*$/, "\\1csp_enforce: \"#{new_resource.csp_enforce}\"") + end + if new_resource.csp_report_url line.gsub!(/^( *)#csp_report_url:.*$/, "\\1csp_report_url: \"#{new_resource.csp_report_url}\"") end @@ -293,7 +307,7 @@ action :create do group "root" environment "NOKOGIRI_USE_SYSTEM_LIBRARIES" => "yes" subscribes :run, "gem_package[bundler#{new_resource.ruby}]" - notifies :run, "execute[#{rails_directory}]" + notifies :restart, "passenger_application[#{rails_directory}]" end execute "#{rails_directory}/db/migrate" do @@ -303,56 +317,39 @@ action :create do user new_resource.user group new_resource.group subscribes :run, "git[#{rails_directory}]" - notifies :run, "execute[#{rails_directory}]" + notifies :restart, "passenger_application[#{rails_directory}]" only_if { new_resource.run_migrations } end - execute "#{rails_directory}/public/assets" do + execute "#{rails_directory}/app/assets/javascripts/i18n" do action :nothing - command "bundle#{new_resource.ruby} exec rake assets:precompile" + command "bundle#{new_resource.ruby} exec rake i18n:js:export" environment "RAILS_ENV" => "production" cwd rails_directory user new_resource.user group new_resource.group - notifies :run, "execute[#{rails_directory}]" + notifies :run, "execute[#{rails_directory}/public/assets]" end - file "#{rails_directory}/public/export/embed.html" do + execute "#{rails_directory}/public/assets" do action :nothing - end - - execute "#{rails_directory}/lib/quad_tile/extconf.rb" do - command "ruby extconf.rb" - cwd "#{rails_directory}/lib/quad_tile" + command "bundle#{new_resource.ruby} exec rake assets:precompile" + environment "RAILS_ENV" => "production" + cwd rails_directory user new_resource.user group new_resource.group - not_if do - ::File.exist?("#{rails_directory}/lib/quad_tile/quad_tile_so.so") && - ::File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= ::File.mtime("#{rails_directory}/lib/quad_tile/extconf.rb") && - ::File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= ::File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.c") && - ::File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= ::File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.h") - end - notifies :run, "execute[#{rails_directory}/lib/quad_tile/Makefile]" + notifies :restart, "passenger_application[#{rails_directory}]" end - execute "#{rails_directory}/lib/quad_tile/Makefile" do + file "#{rails_directory}/public/export/embed.html" do action :nothing - command "make" - cwd "#{rails_directory}/lib/quad_tile" - user new_resource.user - group new_resource.group - notifies :run, "execute[#{rails_directory}]" end - execute rails_directory do - action :nothing - command "passenger-config restart-app --ignore-app-not-running #{rails_directory}" - user "root" - group "root" + passenger_application rails_directory do only_if { ::File.exist?("/usr/bin/passenger-config") } end - template "/etc/cron.daily/rails-#{name.tr('.', '-')}" do + template "/etc/cron.daily/rails-#{new_resource.site.tr('.', '-')}" do cookbook "web" source "rails.cron.erb" owner "root" @@ -363,11 +360,8 @@ action :create do end action :restart do - execute rails_directory do - action :run - command "passenger-config restart-app --ignore-app-not-running #{rails_directory}" - user "root" - group "root" + passenger_application rails_directory do + action :restart end end