include_recipe "accounts"
include_recipe "apache"
include_recipe "git"
-include_recipe "munin"
include_recipe "nodejs"
include_recipe "postgresql"
include_recipe "prometheus"
style[:tile_directories].collect { |directory| directory[:name] }
end.flatten.sort.uniq
-package "renderd"
+package %w[
+ renderd
+ libgoogle-perftools4
+]
systemd_service "renderd" do
dropin "chef"
after "postgresql.service"
wants "postgresql.service"
+ environment "LD_PRELOAD" => "libtcmalloc.so.4"
limit_nofile 4096
memory_high "80%"
memory_max "90%"
sandbox true
restrict_address_families "AF_UNIX"
read_write_paths tile_directories
+ system_call_filter ["@system-service", "mincore"]
restart "on-failure"
end
package %w[
python3-cairo
python3-mapnik
+ python3-pyotp
python3-pyproj
python3-setuptools
]
-python_package "pyotp" do
- python_version "3"
-end
-
directory "/srv/tile.openstreetmap.org/cgi-bin" do
owner "tile"
group "tile"
nodejs_package "carto"
+lowzoom_threads = node.cpu_cores - 1
+
systemd_service "update-lowzoom@" do
description "Low zoom tile update service for %i layer"
user "tile"
owner "root"
group "root"
mode "755"
- variables :style => name
+ variables :style => name, :threads => lowzoom_threads
end
service "update-lowzoom@#{name}" do
end
end
-postgresql_munin "gis" do
- cluster node[:tile][:database][:cluster]
- database "gis"
-end
-
directory File.dirname(node[:tile][:database][:node_file]) do
owner "root"
group "root"
mode "755"
end
+apt_preference "osm2pgsql" do
+ action :remove
+end
+
package %w[
osm2pgsql
osmium-tool
pyosmium
]
-directory "/var/lib/replicate" do
+directory node[:tile][:replication][:directory] do
owner "tile"
group "tile"
mode "755"
end
+link "/var/lib/replicate" do
+ to node[:tile][:replication][:directory]
+ owner "tile"
+ group "tile"
+ not_if { node[:tile][:replication][:directory] == "/var/lib/replicate" }
+end
+
template "/usr/local/bin/expire-tiles" do
source "expire-tiles.erb"
owner "root"
mode "755"
end
-osm2pgsql_arguments = %w[
- --number-processes=1
- --log-progress=false
- --expire-tiles=13-19
- --expire-output=/var/lib/replicate/dirty-tiles.txt
- ]
-
-osm2pgsql_arguments.append("--multi-geometry") if node[:tile][:database][:multi_geometry]
-osm2pgsql_arguments.append("--hstore") if node[:tile][:database][:hstore]
-osm2pgsql_arguments.append("--tag-transform-script=#{node[:tile][:database][:tag_transform_script]}") if node[:tile][:database][:tag_transform_script]
-
systemd_service "replicate" do
description "Rendering database replication service"
after "postgresql.service"
owner "root"
group "root"
mode "755"
+ variables :threads => lowzoom_threads
end
systemd_service "render-lowzoom" do
systemd_timer "render-lowzoom" do
description "Render low zoom tiles"
- on_calendar "Fri *-*-* 23:00:00 UTC"
+ on_calendar "23:00 #{node[:timezone]}"
end
service "render-lowzoom.timer" do
end
end
-munin_plugin "mod_tile_fresh"
-munin_plugin "mod_tile_latency"
-munin_plugin "mod_tile_response"
-munin_plugin "mod_tile_zoom"
-
-munin_plugin "renderd_processed"
-munin_plugin "renderd_queue"
-munin_plugin "renderd_queue_time"
-munin_plugin "renderd_zoom"
-munin_plugin "renderd_zoom_time"
-
-munin_plugin "replication_delay"
-
package "ruby-webrick"
prometheus_exporter "modtile" do