From 9a0990857d1efdbfa155989be512cd2f15f0944f Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 14 Jun 2025 18:32:21 -0700 Subject: [PATCH] Re-render ocean layers weekly This is a brute-force approach to updating the coastline --- cookbooks/vectortile/attributes/default.rb | 6 +++- cookbooks/vectortile/recipes/default.rb | 33 +++++++++++++++++++ .../templates/default/render-lowzoom.erb | 2 +- .../templates/default/render-ocean.erb | 11 +++++++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 cookbooks/vectortile/templates/default/render-ocean.erb diff --git a/cookbooks/vectortile/attributes/default.rb b/cookbooks/vectortile/attributes/default.rb index e08b3dce2..4babf374a 100644 --- a/cookbooks/vectortile/attributes/default.rb +++ b/cookbooks/vectortile/attributes/default.rb @@ -6,9 +6,13 @@ default[:vectortile][:serve][:mode] = :live default[:vectortile][:replication][:url] = "https://osm-planet-eu-central-1.s3.dualstack.eu-central-1.amazonaws.com/planet/replication/minute" default[:vectortile][:replication][:enabled] = true default[:vectortile][:replication][:tileupdate] = true -default[:vectortile][:replication][:threads] = node.cpu_cores +default[:vectortile][:replication][:threads] = [0.5 * node.cpu_cores, 2].min.ceil default[:vectortile][:rerender][:lowzoom][:enabled] = true +default[:vectortile][:rerender][:lowzoom][:threads] = [0.5 * node.cpu_cores, 2].min.ceil default[:vectortile][:rerender][:lowzoom][:maxzoom] = 9 +default[:vectortile][:rerender][:ocean][:enabled] = true +default[:vectortile][:rerender][:ocean][:threads] = [0.5 * node.cpu_cores, 2].min.ceil +default[:vectortile][:rerender][:ocean][:minzoom] = node[:vectortile][:rerender][:lowzoom][:maxzoom] + 1 default[:vectortile][:tilekiln][:version] = "0.8.1" default[:vectortile][:spirit][:version] = "033a4117ec3604e28824b3f3608f5d163ef1b450" diff --git a/cookbooks/vectortile/recipes/default.rb b/cookbooks/vectortile/recipes/default.rb index b32fa1050..b47815f16 100644 --- a/cookbooks/vectortile/recipes/default.rb +++ b/cookbooks/vectortile/recipes/default.rb @@ -332,6 +332,39 @@ else end end +template "/usr/local/bin/render-ocean" do + source "render-ocean.erb" + owner "root" + group "root" + mode "755" + variables :tilekiln_bin => "#{tilekiln_directory}/bin/tilekiln", :source_database => "spirit", :storage_database => "tiles", :config_path => shortbread_config, :min_zoom => node[:vectortile][:rerender][:ocean][:minzoom], :max_zoom => 14 +end + +systemd_service "render-ocean" do + description "Render ocean tiles" + user "tileupdate" + after "postgresql.service" + wants "postgresql.service" + restrict_address_families "AF_UNIX" + sandbox true + exec_start "/usr/local/bin/render-ocean" +end + +systemd_timer "render-ocean" do + description "Render ocean tiles" + on_calendar "Sat 01:00 #{node[:timezone]}" +end + +if node[:vectortile][:rerender][:ocean][:enabled] + service "render-ocean.timer" do + action [:enable, :start] + end +else + service "render-ocean.timer" do + action [:stop, :disable] + end +end + package %w[ ruby-pg ruby-webrick diff --git a/cookbooks/vectortile/templates/default/render-lowzoom.erb b/cookbooks/vectortile/templates/default/render-lowzoom.erb index b14550f40..ced5c81a3 100644 --- a/cookbooks/vectortile/templates/default/render-lowzoom.erb +++ b/cookbooks/vectortile/templates/default/render-lowzoom.erb @@ -10,7 +10,7 @@ vacuumdb --analyze \ <%= @tilekiln_bin %> generate zooms \ --source-dbname "<%= @source_database %>" \ --storage-dbname "<%= @storage_database %>" \ ---num-threads "<%= node[:vectortile][:replication][:threads] %>" \ +--num-threads "<%= node[:vectortile][:rerender][:lowzoom][:threads] %>" \ --config <%= @config_path %> \ --min-zoom <%= @min_zoom %> \ --max-zoom <%= @max_zoom %> diff --git a/cookbooks/vectortile/templates/default/render-ocean.erb b/cookbooks/vectortile/templates/default/render-ocean.erb new file mode 100644 index 000000000..56b7a1662 --- /dev/null +++ b/cookbooks/vectortile/templates/default/render-ocean.erb @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu +export PGAPPNAME='render-ocean' + +<%= @tilekiln_bin %> generate zooms \ +--source-dbname "<%= @source_database %>" \ +--storage-dbname "<%= @storage_database %>" \ +--num-threads "<%= node[:vectortile][:rerender][:lowzoom][:threads] %>" \ +--config <%= @config_path %> \ +--min-zoom <%= @min_zoom %> \ +--max-zoom <%= @max_zoom %> -- 2.39.5