X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/860431223d5e1ada6bc6549c2cfa30dea4d23182..a8719d3ebeae52ab2e0586a0ebb56a0c448a439e:/cookbooks/web/recipes/frontend.rb?ds=sidebyside diff --git a/cookbooks/web/recipes/frontend.rb b/cookbooks/web/recipes/frontend.rb index 8104304d9..6c1f0f761 100644 --- a/cookbooks/web/recipes/frontend.rb +++ b/cookbooks/web/recipes/frontend.rb @@ -17,10 +17,11 @@ # limitations under the License. # -node.default[:memcached][:ip_address] = node.internal_ipaddress +node.default[:memcached][:ip_address] = node.internal_ipaddress || "127.0.0.1" include_recipe "memcached" include_recipe "apache" +include_recipe "fail2ban" include_recipe "web::rails" include_recipe "web::cgimap" @@ -29,10 +30,11 @@ web_passwords = data_bag_item("web", "passwords") apache_module "alias" apache_module "expires" apache_module "headers" -apache_module "proxy_http" -apache_module "proxy_balancer" +apache_module "proxy" +apache_module "proxy_fcgi" apache_module "lbmethod_byrequests" apache_module "lbmethod_bybusyness" +apache_module "reqtimeout" apache_module "rewrite" apache_module "unique_id" @@ -63,29 +65,65 @@ template "/etc/logrotate.d/apache2" do mode "644" end -service "rails-jobs@mailers" do - action [:enable, :start] - supports :restart => true - subscribes :restart, "rails_port[www.openstreetmap.org]" - subscribes :restart, "systemd_service[rails-jobs]" +fail2ban_filter "apache-request-timeout" do + failregex '^ .* "-" 408 .*$' end -service "rails-jobs@storage" do - action [:enable, :start] - supports :restart => true - subscribes :restart, "rails_port[www.openstreetmap.org]" - subscribes :restart, "systemd_service[rails-jobs]" +fail2ban_jail "apache-request-timeout" do + filter "apache-request-timeout" + logpath "/var/log/apache2/access.log" + ports [80, 443] end -if node[:web][:primary_cluster] +fail2ban_filter "apache-notes-search" do + failregex '^ .* "GET /api/0\.6/notes/search\?q=abcde&.*$' +end + +fail2ban_jail "apache-notes-search" do + filter "apache-notes-search" + logpath "/var/log/apache2/access.log" + ports [80, 443] +end + +if %w[database_offline database_readonly].include?(node[:web][:status]) + service "rails-jobs@mailers" do + action :stop + end + + service "rails-jobs@storage" do + action :stop + end + service "rails-jobs@traces" do + action :stop + end +else + service "rails-jobs@mailers" do action [:enable, :start] supports :restart => true subscribes :restart, "rails_port[www.openstreetmap.org]" - subscribes :restart, "systemd_service[rails-jobs]" + subscribes :restart, "systemd_service[rails-jobs@]" end -else + + service "rails-jobs@storage" do + action [:enable, :start] + supports :restart => true + subscribes :restart, "rails_port[www.openstreetmap.org]" + subscribes :restart, "systemd_service[rails-jobs@]" + end + service "rails-jobs@traces" do - action [:disable, :stop] + action [:enable, :start] + supports :restart => true + subscribes :restart, "rails_port[www.openstreetmap.org]" + subscribes :restart, "systemd_service[rails-jobs@]" end end + +template "/usr/local/bin/deliver-message" do + source "deliver-message.erb" + owner "rails" + group "rails" + mode "0700" + variables :secret_key_base => web_passwords["secret_key_base"] +end