]> git.openstreetmap.org Git - chef.git/commitdiff
Merge pull request #361 from polarbearing/patch-1
authorGrant <git@firefishy.com>
Thu, 3 Dec 2020 08:45:08 +0000 (08:45 +0000)
committerGitHub <noreply@github.com>
Thu, 3 Dec 2020 08:45:08 +0000 (08:45 +0000)
DMCA form: add Content-Type header to generated email

18 files changed:
Gemfile.lock
cookbooks/devices/templates/default/udev.rules.erb
cookbooks/mediawiki/resources/site.rb
cookbooks/munin/templates/default/munin.conf.erb
cookbooks/nominatim/attributes/default.rb
cookbooks/nominatim/recipes/default.rb
cookbooks/nominatim/templates/default/nginx.erb
cookbooks/php/resources/fpm.rb
cookbooks/planet/files/default/cgi/HEADER.cgi
cookbooks/planet/recipes/replication.rb
cookbooks/planet/templates/default/planetdump.erb
cookbooks/postgresql/attributes/default.rb
cookbooks/postgresql/templates/default/postgresql.conf.erb
cookbooks/prometheus/templates/default/grafana.ini.erb
cookbooks/tile/files/default/html/favicon.ico
cookbooks/tilecache/templates/default/nginx_tile.conf.erb
roles/dev.rb
roles/pummelzacken.rb

index dceed86bda1b442e34ff9efc52f05e120ef56ba4..d4dbea51a939c77f384423b8c3b4c046b52c29e1 100644 (file)
@@ -4,18 +4,18 @@ GEM
     ast (2.4.1)
     bcrypt_pbkdf (1.0.1)
     builder (3.2.4)
-    chef-utils (16.6.14)
-    cookstyle (7.2.1)
-      rubocop (= 1.3.1)
+    chef-utils (16.7.61)
+    cookstyle (7.3.10)
+      rubocop (= 1.5.0)
     diff-lcs (1.4.4)
     docker-api (2.0.0)
       excon (>= 0.47.0)
       multi_json
     ed25519 (1.2.4)
-    erubi (1.9.0)
+    erubi (1.10.0)
     excon (0.78.0)
     ffi (1.13.1)
-    gssapi (1.3.0)
+    gssapi (1.3.1)
       ffi (>= 1.0.1)
     gyoku (1.3.1)
       builder (>= 2.1.2)
@@ -34,11 +34,11 @@ GEM
     logging (2.3.0)
       little-plugger (~> 1.1)
       multi_json (~> 1.14)
-    mixlib-install (3.12.3)
+    mixlib-install (3.12.5)
       mixlib-shellout
       mixlib-versioning
       thor
-    mixlib-shellout (3.1.6)
+    mixlib-shellout (3.2.2)
       chef-utils
     mixlib-versioning (1.2.12)
     multi_json (1.15.0)
@@ -49,13 +49,13 @@ GEM
       net-ssh (>= 4.0.0)
     net-telnet (0.1.1)
     nori (2.6.0)
-    parallel (1.20.0)
+    parallel (1.20.1)
     parser (2.7.2.0)
       ast (~> 2.4.1)
     pastel (0.8.0)
       tty-color (~> 0.5)
     rainbow (3.0.0)
-    regexp_parser (1.8.2)
+    regexp_parser (2.0.0)
     rexml (3.2.4)
     rspec (3.9.0)
       rspec-core (~> 3.9.0)
@@ -73,16 +73,16 @@ GEM
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.9.0)
     rspec-support (3.9.3)
-    rubocop (1.3.1)
+    rubocop (1.5.0)
       parallel (~> 1.10)
       parser (>= 2.7.1.5)
       rainbow (>= 2.2.2, < 4.0)
-      regexp_parser (>= 1.8)
+      regexp_parser (>= 2.0)
       rexml
-      rubocop-ast (>= 1.1.1)
+      rubocop-ast (>= 1.2.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 1.4.0, < 2.0)
-    rubocop-ast (1.1.1)
+    rubocop-ast (1.3.0)
       parser (>= 2.7.1.5)
     ruby-progressbar (1.10.1)
     rubyntlm (0.6.2)
@@ -103,7 +103,7 @@ GEM
       unicode-display_width (~> 1.5)
       unicode_utils (~> 1.4)
     strings-ansi (0.2.0)
-    test-kitchen (2.7.2)
+    test-kitchen (2.8.0)
       bcrypt_pbkdf (~> 1.0)
       ed25519 (~> 1.2)
       license-acceptance (>= 1.0.11, < 3.0)
@@ -122,7 +122,7 @@ GEM
       pastel (~> 0.8)
       strings (~> 0.2.0)
       tty-cursor (~> 0.7)
-    tty-color (0.5.2)
+    tty-color (0.6.0)
     tty-cursor (0.7.1)
     tty-prompt (0.22.0)
       pastel (~> 0.8)
@@ -143,7 +143,7 @@ GEM
       logging (>= 1.6.1, < 3.0)
       nori (~> 2.0)
       rubyntlm (~> 0.6.0, >= 0.6.1)
-    winrm-elevated (1.2.2)
+    winrm-elevated (1.2.3)
       erubi (~> 1.8)
       winrm (~> 2.0)
       winrm-fs (~> 1.0)
index 2ac6e431f5746d4555e08b413b30a5145a1eb607..8ac2886c2614a24dc5ddbc3abc73f7252fd27693 100644 (file)
@@ -85,6 +85,8 @@ SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1563
 SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1586", RUN+="/sbin/ethtool -G $name rx 4096 tx 4096"
 # Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GBASE-T
 SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x15ff", RUN+="/sbin/ethtool -G $name rx 4096 tx 4096"
+# Ethernet controller: Intel Corporation Ethernet Connection I354 (rev 03)
+SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1f41", RUN+="/sbin/ethtool -G $name rx 4096 tx 4096"
 # Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GBASE-T
 SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x37d2", RUN+="/sbin/ethtool -G $name rx 4096 tx 4096"
 
index 2fc1ed115f37d1836df85b41d43a0496908f496f..598a7044e4ba6ac13bc88caa1227098c9d4a8ca6 100644 (file)
@@ -458,6 +458,13 @@ action :create do
     update_site false
   end
 
+  mediawiki_extension "OSMCALWikiWidget" do
+    site new_resource.site
+    repository "https://github.com/thomersch/OSMCALWikiWidget.git"
+    tag "live"
+    update_site false
+  end
+
   mediawiki_extension "SimpleMap" do
     site new_resource.site
     template "mw-ext-SimpleMap.inc.php.erb"
index fbedbb70bb7d1edd0ac7bd55689d270771b0643b..3aa31b432d91773c7b002caf6fa5aae6738353fd 100644 (file)
@@ -519,7 +519,6 @@ unknown_limit 144
     nginx_requests.graph_args --lower-limit 0
 <% @tilecaches.each do |tc| -%>
     nginx_requests.<%= tc[:name].tr("-", "_") %>.label <%= tc[:name] %>
-    nginx_requests.<%= tc[:name].tr("-", "_") %>.cdef <%= tc[:name].tr("-", "_") %>,8,*
     nginx_requests.<%= tc[:name].tr("-", "_") %>.draw AREASTACK
     nginx_requests.<%= tc[:name].tr("-", "_") %>.min 0
 <% end -%>
index e29fd7931e0eeb174274df5ae3901b0d81d43dab..bf87600ba22ce512356f596952eaf74bb106e185 100644 (file)
@@ -13,10 +13,10 @@ default[:nominatim][:ui_repository] = "https://github.com/osm-search/nominatim-u
 default[:nominatim][:ui_revision] = "master"
 
 default[:nominatim][:fpm_pools] = {
-  :www => {
-    :port => 8000,
+  "nominatim.openstreetmap.org" => {
     :pm => "dynamic",
-    :max_children => 60
+    :max_children => 60,
+    :prometheus_port => 9253
   }
 }
 
index 75c357902ce071b83e5df6fb5103b66919222eb3..b5496a6526b0f44dbc988db9476cdd8a533d91ea 100644 (file)
@@ -380,7 +380,7 @@ end
 end
 
 node[:nominatim][:fpm_pools].each do |name, data|
-  php_fpm name.to_s do
+  php_fpm name do
     port data[:port]
     pm data[:pm]
     pm_max_children data[:max_children]
@@ -388,6 +388,7 @@ node[:nominatim][:fpm_pools].each do |name, data|
     pm_min_spare_servers 10
     pm_max_spare_servers 20
     pm_max_requests 10000
+    prometheus_port data[:prometheus_port]
   end
 end
 
@@ -412,11 +413,13 @@ nginx_site "default" do
   action [:delete]
 end
 
+frontends = search(:node, "recipes:web\\:\\:frontend").sort_by(&:name)
+
 nginx_site "nominatim" do
   template "nginx.erb"
   directory build_directory
   variables :pools => node[:nominatim][:fpm_pools],
-            :frontends => search(:node, "recipes:web\\:\\:frontend"),
+            :frontends => frontends,
             :confdir => "#{basedir}/etc",
             :ui_directory => ui_directory
 end
@@ -454,9 +457,12 @@ end
 
 include_recipe "fail2ban"
 
+frontend_addresses = frontends.collect { |f| f.ipaddresses(:role => :external) }
+
 fail2ban_jail "nominatim_limit_req" do
   filter "nginx-limit-req"
   logpath "#{node[:nominatim][:logdir]}/nominatim.openstreetmap.org-error.log"
   ports [80, 443]
   maxretry 5
+  ignoreips frontend_addresses.flatten.sort
 end
index d56d99c8a13b52fdae1fadfb8542fe34ed80da4a..a44e9382c0bf69c9266f23bbe6c37aad707e64c3 100644 (file)
@@ -1,5 +1,5 @@
 upstream nominatim_service {
-  server 127.0.0.1:<%= @pools[:www][:port ]%>;
+  server unix:/run/php/nominatim.openstreetmap.org.sock;
 }
 
 map $uri $nominatim_script_name {
@@ -49,7 +49,7 @@ map $http_referer $missing_referer {
 geo $whitelisted {
     default 0;
 <% @frontends.each do |frontend| -%>
-<% frontend.ipaddresses(:role => :external) do |address| -%>
+<% frontend.ipaddresses(:role => :external).sort.each do |address| -%>
     <%= address %> 1;
 <% end -%>
 <% end -%>
@@ -86,9 +86,22 @@ map $blocked_user_agent $limit_tarpit {
     2 $binary_remote_addr;
 }
 
+map $missing_email$missing_referer$http_user_agent $generic_mozilla {
+    default 0;
+    ~^11Mozilla/4.0 1;
+    ~^11Mozilla/5.0 2;
+}
+
+map $whitelisted$generic_mozilla$uri $limit_reverse {
+    default "";
+    ~01/reverse.*  $binary_remote_addr;
+    ~02/reverse.*  $binary_remote_addr;
+}
+
 limit_req_zone $limit_www zone=www:50m rate=2r/s;
 limit_req_zone $limit_tarpit zone=tarpit:10m rate=1r/s;
 limit_req_zone $binary_remote_addr zone=blocked:10m rate=20r/m;
+limit_req_zone $limit_reverse zone=reverse:10m rate=10r/m;
 
 server {
     listen 80 default_server;
@@ -166,6 +179,7 @@ server {
 
         limit_req zone=www burst=10;
         limit_req zone=tarpit burst=2;
+        limit_req zone=reverse burst=5;
         limit_req_status 429;
         fastcgi_pass nominatim_service;
         include fastcgi_params;
@@ -188,6 +202,7 @@ server {
 
         limit_req zone=www burst=10;
         limit_req zone=tarpit burst=2;
+        limit_req zone=reverse burst=5;
         limit_req_status 429;
         fastcgi_pass    nominatim_service;
         include         fastcgi_params;
index c461cf679c065b189df7ccb7ae330e7651e1e94f..0178e64ce664f47cbc3510a935e31fa4612755e4 100644 (file)
@@ -45,7 +45,7 @@ action :create do
     owner "root"
     group "root"
     mode "644"
-    variables new_resource.to_hash
+    variables new_resource.to_hash.merge(:pool => new_resource.pool)
   end
 
   if new_resource.prometheus_port
index 30bf73307d457378a16c4c0aba437f1875422cd0..874c9c28da1a6143ccb10bafeeef0e2ba616a31b 100644 (file)
@@ -69,7 +69,7 @@ print """
 The files found here are regularly-updated, complete copies of the OpenStreetMap.org
 database, and those published before the 12 September 2012 are distributed under a Creative Commons Attribution-ShareAlike 2.0 license, those published after are  Open Data Commons Open Database License 1.0 licensed. For more information, <a href="https://wiki.openstreetmap.org/wiki/Planet.osm">see the project wiki</a>.
 </p>
-<p><div class="alert"><strong>WARNING</strong> Download speeds are currently restricted to 4096 KB/s due to limited available capacity on our Internet connection. <a href="https://wiki.openstreetmap.org/wiki/Planet.osm#Planet.osm_mirrors">Please use a mirror if possible.</a></div></p>
+<p><div class="alert"><strong>WARNING</strong> Download speeds are currently restricted to 4096 KB/s due to limited available capacity on our Internet connection. <a href="https://wiki.openstreetmap.org/wiki/Planet.osm#BitTorrent">Please use torrents</a> or <a href="https://wiki.openstreetmap.org/wiki/Planet.osm#Planet.osm_mirrors">a mirror</a> if possible.</div></p>
 <table id="about">
   <tr>
     <th>
@@ -113,9 +113,8 @@ database, and those published before the 12 September 2012 are distributed under
         is a tool for importing the data into a Postgis database for rendering maps.
         </p>
         <p>
-        <a href="https://wiki.openstreetmap.org/wiki/Coastline_error_checker">Processed coastline data</a>
-        derived from OSM data is also needed for rendering usable maps, and can be found in a
-        <a href="historical-shapefiles/processed_p.tar.bz2">single shapefile</a> (360MB).
+        <a href="https://osmdata.openstreetmap.de/">Processed coastline data</a>
+        derived from OSM data is also needed for rendering usable maps.
         </p>
     </td>
     <td>
index 2a3e65cb2127dc5389ce3d78fee85168b389cd1b..165b9282a51bd2f4ae137bf0ede80b9bb8fbb399 100644 (file)
@@ -137,6 +137,18 @@ directory "/store/planet/replication/test" do
   mode "755"
 end
 
+directory "/store/planet/replication/test/day" do
+  owner "planet"
+  group "planet"
+  mode "755"
+end
+
+directory "/store/planet/replication/test/hour" do
+  owner "planet"
+  group "planet"
+  mode "755"
+end
+
 directory "/store/planet/replication/test/minute" do
   owner "planet"
   group "planet"
@@ -174,6 +186,18 @@ directory "/var/run/lock/changeset-replication/" do
   mode "750"
 end
 
+directory "/var/lib/replication" do
+  owner "planet"
+  group "planet"
+  mode "755"
+end
+
+directory "/var/lib/replication/test" do
+  owner "planet"
+  group "planet"
+  mode "755"
+end
+
 template "/etc/replication/auth.conf" do
   source "replication.auth.erb"
   user "root"
@@ -223,6 +247,76 @@ systemd_timer "replication-minutely" do
   accuracy_sec 5
 end
 
+directory "/var/lib/replication/test/hour" do
+  owner "planet"
+  group "planet"
+  mode "755"
+end
+
+template "/var/lib/replication/test/hour/configuration.txt" do
+  source "replication.config.erb"
+  owner "planet"
+  group "planet"
+  mode "644"
+  variables :base => "test/minute", :interval => 3600
+end
+
+link "/var/lib/replication/test/hour/data" do
+  to "/store/planet/replication/test/hour"
+end
+
+systemd_service "replication-hourly" do
+  description "Hourly replication"
+  user "planet"
+  exec_start "/usr/local/bin/osmosis -q --merge-replication-files workingDirectory=/var/lib/replication/test/hour"
+  private_tmp true
+  private_devices true
+  protect_system "full"
+  protect_home true
+  restrict_address_families %w[AF_INET AF_INET6]
+  no_new_privileges true
+end
+
+systemd_timer "replication-hourly" do
+  description "Daily replication"
+  on_calendar "*-*-* *:02/15:00"
+end
+
+directory "/var/lib/replication/test/day" do
+  owner "planet"
+  group "planet"
+  mode "755"
+end
+
+template "/var/lib/replication/test/day/configuration.txt" do
+  source "replication.config.erb"
+  owner "planet"
+  group "planet"
+  mode "644"
+  variables :base => "test/hour", :interval => 86400
+end
+
+link "/var/lib/replication/test/day/data" do
+  to "/store/planet/replication/test/day"
+end
+
+systemd_service "replication-daily" do
+  description "Daily replication"
+  user "planet"
+  exec_start "/usr/local/bin/osmosis -q --merge-replication-files workingDirectory=/var/lib/replication/test/day"
+  private_tmp true
+  private_devices true
+  protect_system "full"
+  protect_home true
+  restrict_address_families %w[AF_INET AF_INET6]
+  no_new_privileges true
+end
+
+systemd_timer "replication-daily" do
+  description "Daily replication"
+  on_calendar "*-*-* *:02/15:00"
+end
+
 template "/etc/replication/changesets.conf" do
   source "changesets.conf.erb"
   user "root"
@@ -239,12 +333,6 @@ template "/etc/replication/users-agreed.conf" do
   variables :password => db_passwords["planetdiff"]
 end
 
-directory "/var/lib/replication" do
-  owner "planet"
-  group "planet"
-  mode "755"
-end
-
 directory "/var/lib/replication/minute" do
   owner "planet"
   group "planet"
@@ -314,6 +402,14 @@ if node[:planet][:replication] == "enabled"
     action [:enable, :start]
   end
 
+  service "replication-hourly.timer" do
+    action [:enable, :start]
+  end
+
+  service "replication-daily.timer" do
+    action [:enable, :start]
+  end
+
   cron_d "replication-minutely" do
     user "planet"
     command "/usr/local/bin/osmosis -q --replicate-apidb authFile=/etc/replication/auth.conf validateSchemaVersion=false --write-replication workingDirectory=/store/planet/replication/minute"
@@ -353,6 +449,14 @@ else
     action [:stop, :disable]
   end
 
+  service "replication-hourly.timer" do
+    action [:stop, :disable]
+  end
+
+  service "replication-daily.timer" do
+    action [:stop, :disable]
+  end
+
   cron_d "replication-minutely" do
     action :delete
   end
index ae6302382040f782704ba364f99dca154d1163cf..5b32054a61cace31f4f2edfd58353c97b0a9b754 100644 (file)
@@ -97,6 +97,7 @@ function mk_torrent {
      -w https://ftp.spline.de/pub/openstreetmap/${web_path} \
      -w https://osm.openarchive.site/${name} \
      -w https://downloads.opencagedata.com/planet/${name} \
+     -w https://planet.osm-hr.org/${web_path} \
      -c "OpenStreetMap ${type} data export, licensed under https://opendatacommons.org/licenses/odbl/ by OpenStreetMap contributors" \
      -o ${name}.torrent
 }
index 2d9fc10797f1a9e1e5c23dd1ebc27a60379a52cb..c7eeecff8215e5987ea2f91f4beddd160b786c40 100644 (file)
@@ -2,6 +2,7 @@ default[:postgresql][:versions] = []
 default[:postgresql][:clusters] = {}
 default[:postgresql][:settings][:defaults][:port] = "5432"
 default[:postgresql][:settings][:defaults][:max_connections] = "100"
+default[:postgresql][:settings][:defaults][:ssl] = "true"
 default[:postgresql][:settings][:defaults][:shared_buffers] = "32MB"
 default[:postgresql][:settings][:defaults][:temp_buffers] = "8MB"
 default[:postgresql][:settings][:defaults][:work_mem] = "1MB"
index 3c84ec994081343b1085d421228ce726e4bf5ae2..e2892f68a888d04cf6ae857d181528787564ca05 100644 (file)
@@ -28,7 +28,7 @@ unix_socket_directory = '/var/run/postgresql'
 
 # - Security and Authentication -
 
-ssl = true
+ssl = <%= @settings[:ssl] || @defaults[:ssl] %>
 ssl_renegotiation_limit = 0
 
 #------------------------------------------------------------------------------
@@ -86,7 +86,9 @@ archive_command = '<%= @settings[:archive_command] || @defaults[:archive_command
 # - Sending Server(s) -
 
 max_wal_senders = <%= @settings[:max_wal_senders] || @defaults[:max_wal_senders] %>
+<% if @version.to_f >= 9.4 -%>
 max_replication_slots = <%= @settings[:max_replication_slots] || @defaults[:max_replication_slots] %>
+<% end -%>
 
 # - Standby Servers -
 
index 08f1d5dfd2f4d4e989e8da2e247697643819cf8d..d3ea1ce655a9e14515b90f04babd9f7edeac6253 100644 (file)
@@ -15,3 +15,8 @@ host = localhost:25
 skip_verify = true
 from_address = admins@openstreetmap.org
 from_name = Prometheus
+
+[auth.anonymous]
+enabled = true
+org_name = OpenStreetMap
+org_role = Viewer
index 27b042b5cec16967462ab011cf4b47320fbc14c4..975e1cb0d9a56a11d5843a5bc851bd8ed2f6b0ca 100644 (file)
Binary files a/cookbooks/tile/files/default/html/favicon.ico and b/cookbooks/tile/files/default/html/favicon.ico differ
index 0ea85d7550d01e0b551c376b1823a1674a3d94a9..338e0d51d01889acfaf2f9877e9772c53a359de5 100644 (file)
@@ -154,6 +154,14 @@ map $http_referer $denied_referer {
   '~^https?://[^.]*\.cellmapper\.net/'   1;
 }
 
+map $http_referer $censored_referer {
+  default                                 0; # Not denied
+  # Blocked on board instructions
+  '~^https?://schiebt-sie-ab\.de/'        1;
+  '~^https?://[^.]*\.schiebt-sie-ab\.de/' 1;
+}
+
+
 map $http_referer $osm_referer {
   default                                 '';    # False
   '~^https:\/\/www\.openstreetmap\.org\/' 'osm'; # True
@@ -405,6 +413,11 @@ server {
         return 418;
       }
 
+      if ($censored_referer) {
+        set $limit_rate 512;
+        return 451 "Unavailable at OSMF Board request";
+      }
+
       # Strip any ?query parameters from urls
       set $args '';
 
index 565d4b70cc66d12b03a3ae1bf82174a51e0c9d1c..c192ac1823a1d83ab6a2595d19bb30cebe32b575 100644 (file)
@@ -131,7 +131,7 @@ default_attributes(
     }
   },
   :postgresql => {
-    :versions => ["9.1", "12"],
+    :versions => ["12"],
     :settings => {
       :defaults => {
         :shared_buffers => "1GB",
@@ -140,9 +140,6 @@ default_attributes(
         :max_stack_depth => "4MB",
         :effective_cache_size => "4GB"
       },
-      "9.1" => {
-        :port => "5433"
-      },
       "12" => {
         :port => "5432",
         :wal_level => "logical",
index b6d866984e099892c813d28840d1970dacf0575b..05393514c155b5ecca84cc774c7a620ab8b9ed26 100644 (file)
@@ -25,7 +25,7 @@ default_attributes(
     }
   },
   :postgresql => {
-    :versions => ["12"],
+    :versions => ["13"],
     :settings => {
       :defaults => {
         :listen_addresses => "10.0.0.20",
@@ -47,8 +47,8 @@ default_attributes(
   :nominatim => {
     :state => "standalone",
     :dbadmins => %w[lonvia tomh],
-    :dbcluster => "12/main",
-    :postgis => "2.5",
+    :dbcluster => "13/main",
+    :postgis => "3",
     :enable_backup => true,
     :flatnode_file => "/ssd/nominatim/nodes.store",
     :tablespaces => {