$TTL 604800
@ IN SOA <%= node[:fdqn] %>. root.openstreetmap.org. (
- 2021092001 ; Serial
+ 2025021801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
100.48.0 IN PTR pdu1.ams.openstreetmap.org.
101.48.0 IN PTR pdu2.ams.openstreetmap.org.
102.48.0 IN PTR oob1.ams.openstreetmap.org.
+103.48.0 IN PTR ats1.ams.openstreetmap.org.
3.49.0 IN PTR faffy.oob.openstreetmap.org.
4.49.0 IN PTR dribble.oob.openstreetmap.org.
RewriteRule ^/api/0\.6/(node|way|relation)/[0-9]+/relations(\.json|\.xml)?$ unix:<%= @cgimap_socket %>|fcgi://127.0.0.1$0 [P]
RewriteRule ^/api/0\.6/node/[0-9]+/ways(\.json|\.xml)?$ unix:<%= @cgimap_socket %>|fcgi://127.0.0.1$0 [P]
RewriteRule ^/api/0\.6/(way|relation)/[0-9]+/full(\.json|\.xml)?$ unix:<%= @cgimap_socket %>|fcgi://127.0.0.1$0 [P]
+ RewriteCond %{REQUEST_METHOD} ^(HEAD|GET)$
RewriteRule ^/api/0\.6/(nodes|ways|relations)(\.json|\.xml)?$ unix:<%= @cgimap_socket %>|fcgi://127.0.0.1$0 [P]
RewriteRule ^/api/0\.6/changeset/[0-9]+/(upload|download)(\.json|\.xml)?$ unix:<%= @cgimap_socket %>|fcgi://127.0.0.1$0 [P]
<% end -%>
fixed-address 10.0.48.101;
}
+host ats1.ams.openstreetmap.org {
+ hardware ethernet 00:c0:b7:e5:5e:f1;
+ server-name "ats1.ams.openstreetmap.org";
+ fixed-address 10.0.48.103;
+}
+
host oob1.dub.openstreetmap.org {
hardware ethernet 62:bd:62:a6:05:25;
server-name "oob1.dub.openstreetmap.org";
systemd_timer "titiler-restart" do
on_boot_sec "10m"
- on_unit_inactive_sec "30m"
+ on_unit_inactive_sec "2h"
randomized_delay_sec "20m"
end
source "/store/imagery/za/ngi-topo-250k/ngi-topo-250k-combined.vrt"
copyright 'State Copyright © 1996–2010 <a href="https://ngi.dalrrd.gov.za/">Chief Directorate: National Geo-spatial Information</a>'
default_layer true
+ revision 2
end
imagery_layer "za_ngi_topo_50k" do
projection "EPSG:3857"
source "/store/imagery/za/ngi-topo-50k/ngi-topo-50k-combined.vrt"
copyright 'State Copyright © 1996–2013 <a href="https://ngi.dalrrd.gov.za/">Chief Directorate: National Geo-spatial Information</a>'
+ revision 2
end
limit_nofile 16384
memory_high "12G"
memory_max "12G"
+ limit_core 0
user "imagery"
group "imagery"
exec_start "/usr/bin/multiwatch -f 8 --signal=TERM -- /usr/lib/cgi-bin/mapserv"
<% end -%>
server {
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
+ listen 443 ssl;
+ listen [::]:443 ssl;
+
+ http2 on;
+
server_name <%= @name %> a.<%= @name %> b.<%= @name %> c.<%= @name %><% @aliases.each do |alias_name| %> <%= alias_name %> a.<%= alias_name %> b.<%= alias_name %> c.<%= alias_name %><%- end -%>;
http2_max_concurrent_streams 512;
}
server {
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
+ listen 443 ssl;
+ listen [::]:443 ssl;
+
+ http2 on;
+
server_name <%= @name %> <% @aliases.each do |alias_name| %> <%= alias_name %><%- end -%>;
http2_max_concurrent_streams 512;
switch1.ams.openstreetmap.org,switch1.ams,184.104.179.129,2001:470:1:fa1::1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbUecW/591rGCYtkdVTUgAKTBc+lEhraeMCau7CHqMkkUn+/pe68toDySdTaO8jua1q1asuEWH3MZ2AGAPSF+xhrqJLLPQmm0WdEAQfZChxQUoqCPqlWAuM5u+bAc3ntKjw2v2myoGGAqjL27QkZDP8qPdxvKcbm2YpPVOHP56jsyp/9BjVhIpWVmMhkOAfBSjdKU+uP+NueHrJ/AueoqucQE0txeo5Mmw7GlRuLTsMNDU3Khlhjs/2Q0QGiMXV6hQxj5AgnaDZMdSRbp8lXlctDZmipr7jVk3TL+knzySih5wJ7wmeZimW8Dhcxk6HBo2lGgPGdtQgttCF5ZUGcfF
switch1.ams.openstreetmap.org,switch1.ams,184.104.179.129,2001:470:1:fa1::1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFPNVsMuGWMe2OP9AIg0hqZLSJP8zyNHWqYrXd5Mnfr12XdhzWEAKLTD14ZnJcz/GBaE0ad3IjT+hVoS/GVtxpQ=
switch1.ams.openstreetmap.org,switch1.ams,184.104.179.129,2001:470:1:fa1::1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA615MNtLzOv6qPfFsD0I6Pd0itshpHLAVImjt1ME4SM
-oob1.ams.openstreetmap.org,oob1.ams,10.0.48.102 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2oeoe4olettjDauLuRiXRQVg5k6EO+PFfS9Ho3OzlOeYr1+h1SSPLkFtr20yOKcGXQcmYLjTbzvt/sbz2JUbfJHc2n7tMvQKK5ClVxLwqt2jpfSepGbG2KjG6vwxpkcDMH0bquzr/8ehpYmBwh3m8EARgcVNYoVL6J5OV4ILAtjNEllsrB71gitrarC8iqslRLVMjane9YKa7z0AGkwcT9w4qbcyuQ24rJF0Xo/IcraxVAYeX0Xtfx9rD3Zt1kHawaKYQdJM7RZvTtWcgCzHt738lFZ15Qj3at6vxxGpnduZiuHLB3PCW9yP4CFHm3Qs3TUyh3VqrNVFFdFvUXnP+DR3QK2E7TpViagZmXb+2AeCaLtrJ+1h0NEmQmliB4Zm4XKPsdS7k6Ul43pYQ5i1ipwZBNvhJrByQJ6UkpIjrwUlQBxXcEWGZaSL0sqqDQIYPizXZWOh7pQay2LxnHUVp0MZT30iVLYjptu9PcJ6CBwoKzhnVHPh7SON4uzDyMrk=
-oob1.ams.openstreetmap.org,oob1.ams,10.0.48.102 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFLujNadDWF9OqF//izQ3/jm4zElWb2nMjfpeiUVCYh/Jrsl07c1bRJlnSmoxL2H0xeHJXQh1E4PPy4o/5N4GfE=
-oob1.ams.openstreetmap.org,oob1.ams,10.0.48.102 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINxBm8YPJNtUIDh+0YWKY/5XKv8QKQBtF3ecqQcxIQNJ
+oob1.ams.openstreetmap.org,oob1.ams,10.0.48.102 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDTgHga8l3mOpydchsZsvlaCJpxHoUV5dYBzK8m3iOedqd1UBS9KbHEfgFOvXcd3cmOnQT5dM1YXCQ74WB9hI5Wbkz+oHxWq+ZJeHOsXVIqxFzgxsI8e8gxJve7VyzxR52yiStBdLODhwwMmRPIH8AzzR93Fzi5AAQrGoHoqi/R0A/l6yTI8YnjJ2WaKzflId0YMyjR2KhOj+jCgCZIJR6DqfVpZXERMAtdVUY78Ub0E8iYyWg24gI176l4jCezmaTZ99tWo41mGXax9zXizQr4jx4yIxzRMhqAoJk8oDBkdhxudRUL2eWvBs3v1kcY3Ywtxi+wQIqClvQgBkWrHe4Jujjl8EEFuGHh6156Al7WqEnC9EcENA5Lk/IM0lzDbeT+WTyO/qU8cu035hmPMydYBHjqzo5L6yDwFXEAtJpHlr8QQDzEwgtK9bXc453cQDEJW4JWjP7UlsTlbflSBGQrY5FpI8D+MgnDYNld2kD4Fxzomf4ne+M0w19jrtNMJuE=
+oob1.ams.openstreetmap.org,oob1.ams,10.0.48.102 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPkUAdFYwolSkUs7d1k+mRVBCV7WRrKsebj8RbjLqPCmEQo9ABSy2iAuYOYgkkqlgmB8F8OHsnNtmGzx7smCwAU=
+oob1.ams.openstreetmap.org,oob1.ams,10.0.48.102 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKVdlLkjFUDExO7YCixEWvaKHGS0IQHn2nBrkMjGTwRx
+ats1.ams.openstreetmap.org,ats1.ams,10.0.48.103 ssh-rsa AAAAB3NzaC1yc2EAAAACAQEAAAEBAKnx+hwj8Am4DuYXZLK1whHqOjW4Bbs/KrLqFokoZgJxzp1g+6sOAzXPy8w3dYyHBJaXCmr3RisIhG7fj0pITkywhU8ygiaEHDzPFyGqxVYe1oI3ayE47hC14Jhu33p7F+pY1xEVUa2H3Xu4F8toHnmuIjLAJ9phaEVvnjLl5n47dM1VfB5KB4NvuDejBthaZpgbALainUuKaqUL2Wgb0LxbDFRTQ+r6uUY4SEFnfqwveovdBL/edd+14/yRob0/r6zlubi5PhvMH1rCaE7flFNr61LItz06VAs+vZpLTNTIFXHqAtCjIA6e8VvvOn8wwmjxXKLsUOFZipvW9Uc9kTk=
faffy.oob.openstreetmap.org,faffy.oob,10.0.49.3 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuL6kBDuK+/xj40jp4ZP9HVoH1enU1W9MWO4Q0cxlD9sjHaz/mIbLhtPxElrw807QLsUdOx1IeD0jCLi9XAYYEF2xFFZ9DIP+qGp6hQ3XJrmOVgbDuckPjdvJWAxC5TVaWqwvHyp02biJCfSbOzsmjm2cOp03Cqq18HJOCfA3AxQ/zSQDSVemFoFPVeM67M9NgM64z1idPAvMVtW8Kd+unU/oE7V+Jil5TR5vwK+kVKEixxMtZfkJn0bNKVFWX5sJYmKWze+b95O+iQlsxmQW/p7UVM/3krKdBBT8+9b6UOv8TN0Yhopp86aXEgtvUOOyyimjqO3V5ogRMGj3b9G+9
-vhagar.oob.openstreetmap.org,10.0.49.5 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJaXI71RCPjbni+WxBnOf2CzkLi0H5ARG1RxevLO5smM/9LbXVAVgcZRnI3egmbaJF7r6queHtrQq5y27+Rz9OEoJ/DWMS/qaGWMqj1f7LDv+H44juKAxmayOYkLJUnXN/AYITjpNSfLy0kuSo9cGpHVKjQZVFGv92b0c1CPrQ0WJ3Q8Y7ERc77b2PBQmxWow/3RHv6SoeT8riCfoU5Mnuld2aNjlJlEglf79QB8r7Xonx3TDfcr0+bGbvJNhYoMPPDXFC96wCpjvIDQu09BEM91/zP/VRE3E+bvIp0WRugU6vUYAAIcKuyQpON5Fs1kWaY4AZ6/4+Qdql5B8z8twz
+vhagar.oob.openstreetmap.org,vhagar.oob,10.0.49.5 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJaXI71RCPjbni+WxBnOf2CzkLi0H5ARG1RxevLO5smM/9LbXVAVgcZRnI3egmbaJF7r6queHtrQq5y27+Rz9OEoJ/DWMS/qaGWMqj1f7LDv+H44juKAxmayOYkLJUnXN/AYITjpNSfLy0kuSo9cGpHVKjQZVFGv92b0c1CPrQ0WJ3Q8Y7ERc77b2PBQmxWow/3RHv6SoeT8riCfoU5Mnuld2aNjlJlEglf79QB8r7Xonx3TDfcr0+bGbvJNhYoMPPDXFC96wCpjvIDQu09BEM91/zP/VRE3E+bvIp0WRugU6vUYAAIcKuyQpON5Fs1kWaY4AZ6/4+Qdql5B8z8twz
dulcy.oob.openstreetmap.org,dulcy.oob,10.0.49.9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgmlwXGPIPDqoMz4s5edr+G4iuBnCYcFXjY7Et9jG/ezI6aIKd9lEOXvnHJX5hrC21aqd06dhyMLwZN+eSjJhXNaLtYmm5P442H2ZnGca1KNSpF7yRVhn0eRpX39xWK3biVfMw64mzvV3636C1adCkgBwuaqCvz1EHm/KRrySfuETFLU=
spike-06.oob.openstreetmap.org,spike-06.oob,10.0.49.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDwQVb/cYgKp21vw6+jKr5TLAD77oKunbFbjvwPL34iLRDqdJcEOdJBV1A63ZDUWSWjDUrTa0kyneoiYdD876EpuspZ4bPgmiHBvug5NR3usxa8PAsia1K+fONAGi3+s96H6Us273KHNH5QwyBNDyYaDDjIECkydU4bQT0FSX0j32eAHI62ZO/H82fUyL20PIK/nCUaJUd+5iXgcTfjP+eL66ghgPCgXGF99/w2+3EUxP2IN9J2yI57H/rYn3rj+NdZyQuzc0TAToT341cYh2+a8R1Sb/DEFiMZFE2hJ2NeVEaBYxPSlFfhRtlB6ArXg5QL7e7UScQh/ZHLU26A1ZaB
spike-07.oob.openstreetmap.org,spike-07.oob,10.0.49.7 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxLxAbMPZw+LgzB8JmTLLxqc6CZXYA3Wo18RM02+EnmtRX6AAf/VFb7E/VpgHfZecwnFK7u21R47+fFdHCb8EDYGeWbOYoEOYMoDh26H8/aFPHbldgG0xs9EwfTryWB7iZ2sD9nLv+nBpDkFXVq53kscmDlUKQrvUyj/zR55xGxcq0ruu3w05ZeGx5I6HRY0xeK+6H4s6sZtF24Zm3CttQ5M7ADgWffE35ZwA9tEdioM3J3c5EcV4HMdhl7wame6pID9+FpDEtcts5z5sfW9Y0yx3FHrXCxRWxHRbyFG9/+4RNwKJBRZrdb+VSLlrYVUFLEfb1AhOxr8ZfSsJU1V0V
--- /dev/null
+#
+# Cookbook:: ruby
+# Resource:: bundle_config
+#
+# Copyright:: 2025, OpenStreetMap Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# 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,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+resource_name :bundle_config
+provides :bundle_config
+
+unified_mode true
+
+default_action :create
+
+property :directory, :kind_of => String, :name_property => true
+property :user, :kind_of => String
+property :group, :kind_of => String
+property :settings, :kind_of => Hash
+
+load_current_value do |new_resource|
+ current_settings = shell_out!("#{node[:ruby][:bundle]} config list --parseable", :cwd => new_resource.directory).stdout.split("\n").map do |line|
+ line.split("=")
+ end.to_h
+
+ settings current_settings
+end
+
+action :create do
+ converge_if_changed :settings do
+ new_resource.settings.each do |name, value|
+ execute "bundle-config-set-#{name}" do
+ command "#{bundle_command} config set --local #{name} #{value}"
+ cwd new_resource.directory
+ user new_resource.user
+ group new_resource.group
+ end
+ end
+ end
+end
+
+action_class do
+ def bundle_command
+ node[:ruby][:bundle]
+ end
+end
+
+def after_created
+ subscribes :run, "gem_package[bundler#{node[:ruby][:version]}-1]"
+ subscribes :run, "gem_package[bundler#{node[:ruby][:version]}-2]"
+end
aliases ["www.stateofthemap.org", "stateofthemap.com", "www.stateofthemap.com", "sotm.org", "www.sotm.org"]
end
-%w[2007 2008 2009 2013 2016 2017 2018 2019 2020 2021 2022 2024].each do |year|
+%w[2007 2008 2009 2013 2016 2017 2018 2019 2020 2021 2022 2024 2025].each do |year|
podman_site "#{year}.stateofthemap.org" do
image "ghcr.io/openstreetmap/stateofthemap-#{year}:latest"
aliases ["#{year}.stateofthemap.com", "#{year}.sotm.org"]
property :limit_nofile, Integer
property :limit_as, [Integer, String]
property :limit_cpu, [Integer, String]
+property :limit_core, [Integer, String]
property :memory_low, [Integer, String]
property :memory_high, [Integer, String]
property :memory_max, [Integer, String]
<% if @limit_cpu -%>
LimitCPU=<%= @limit_cpu %>
<% end -%>
+<% if @limit_core -%>
+LimitCORE=<%= @limit_core %>
+<% end -%>
<% if @memory_low -%>
MemoryLow=<%= @memory_low %>
<% end -%>
action :delete
end
+ directory "#{rails_directory}/vendor/bundle/ruby/#{node[:ruby][:version]}.0" do
+ owner new_resource.user
+ group new_resource.group
+ mode "775"
+ recursive true
+ end
+
+ bundle_config "#{rails_directory}" do
+ user new_resource.user
+ group new_resource.group
+ settings "deployment" => "true",
+ "build.nokogiri" => "--use-system-libraries"
+ end
+
bundle_install "#{rails_directory}" do
action :nothing
- user "root"
- group "root"
- environment "NOKOGIRI_USE_SYSTEM_LIBRARIES" => "yes"
+ user new_resource.user
+ group new_resource.group
+ subscribes :run, "directory[#{rails_directory}/vendor/bundle/ruby/#{node[:ruby][:version]}.0]"
subscribes :run, "git[#{rails_directory}]"
end
RewriteRule ^/api/0\.6/(node|way|relation)/[0-9]+/relations(\.json|\.xml)?$ unix:/run/cgimap/socket|fcgi://127.0.0.1$0 [P]
RewriteRule ^/api/0\.6/node/[0-9]+/ways(\.json|\.xml)?$ unix:/run/cgimap/socket|fcgi://127.0.0.1$0 [P]
RewriteRule ^/api/0\.6/(way|relation)/[0-9]+/full(\.json|\.xml)?$ unix:/run/cgimap/socket|fcgi://127.0.0.1$0 [P]
+ RewriteCond %{REQUEST_METHOD} ^(HEAD|GET)$
RewriteRule ^/api/0\.6/(nodes|ways|relations)(\.json|\.xml)?$ unix:/run/cgimap/socket|fcgi://127.0.0.1$0 [P]
RewriteRule ^/api/0\.6/changeset/[0-9]+/(upload|download)(\.json|\.xml)?$ unix:/run/cgimap/socket|fcgi://127.0.0.1$0 [P]
:last_address => "10.0.79.254"
},
:exim => {
- :external_interface => "<;${if <{${randint:100}}{75} {184.104.226.98;2001:470:1:b3b::2}{87.252.214.98;2001:4d78:fe03:1c::2}}",
+ :external_interface => "<;${if <{${randint:100}}{50} {184.104.226.98;2001:470:1:b3b::2}{87.252.214.98;2001:4d78:fe03:1c::2}}",
:routes => {
:openstreetmap => {
:comment => "openstreetmap.org",
"net.core.somaxconn" => 10000
}
}
- },
- :nginx => {
- :cache => {
- :fastcgi => {
- :enable => true,
- :keys_zone => "fastcgi_cache_zone:256M",
- :inactive => "45d",
- :max_size => "51200M"
- }
- }
}
)
},
:nginx => {
:cache => {
+ :fastcgi => {
+ :enable => true,
+ :keys_zone => "fastcgi_cache_zone:2048M",
+ :inactive => "180d",
+ :max_size => "196608M"
+ },
:proxy => {
:enable => true,
- :keys_zone => "proxy_cache_zone:256M",
+ :keys_zone => "proxy_cache_zone:2048M",
:inactive => "180d",
- :max_size => "51200M"
+ :max_size => "196608M"
}
}
}