From 7c2435e718fa00c7796ec7b34ac922a704ecf465 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Wed, 30 Apr 2025 16:48:41 -0700 Subject: [PATCH] vectortile: Rerender lowzoom tiles daily --- cookbooks/vectortile/attributes/default.rb | 2 ++ cookbooks/vectortile/recipes/default.rb | 33 +++++++++++++++++++ .../templates/default/render-lowzoom.erb | 10 ++++++ .../vectortile/inspec/rerender_spec.rb | 7 ++++ 4 files changed, 52 insertions(+) create mode 100644 cookbooks/vectortile/templates/default/render-lowzoom.erb create mode 100644 test/integration/vectortile/inspec/rerender_spec.rb diff --git a/cookbooks/vectortile/attributes/default.rb b/cookbooks/vectortile/attributes/default.rb index 6ad85e7ec..4f642ba3b 100644 --- a/cookbooks/vectortile/attributes/default.rb +++ b/cookbooks/vectortile/attributes/default.rb @@ -7,6 +7,8 @@ default[:vectortile][:replication][:url] = "https://osm-planet-eu-central-1.s3.d default[:vectortile][:replication][:enabled] = true default[:vectortile][:replication][:tileupdate] = true default[:vectortile][:replication][:threads] = node.cpu_cores +default[:vectortile][:rerender][:lowzoom][:enabled] = true +default[:vectortile][:rerender][:lowzoom][:maxzoom] = 9 default[:vectortile][:tilekiln][:version] = "0.7.1" default[:vectortile][:spirit][:version] = "7c68ecdd82606fd64dfe6e2ba7a1f1741afcc34c" diff --git a/cookbooks/vectortile/recipes/default.rb b/cookbooks/vectortile/recipes/default.rb index ce3424130..77bb9da82 100644 --- a/cookbooks/vectortile/recipes/default.rb +++ b/cookbooks/vectortile/recipes/default.rb @@ -293,6 +293,39 @@ else end end +template "/usr/local/bin/render-lowzoom" do + source "render-lowzoom.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 => 0, :max_zoom => node[:vectortile][:rerender][:lowzoom][:maxzoom] +end + +systemd_service "render-lowzoom" do + description "Render low zoom tiles" + user "tileupdate" + after "postgresql.service" + wants "postgresql.service" + restrict_address_families "AF_UNIX" + sandbox true + exec_start "/usr/local/bin/render-lowzoom" +end + +systemd_timer "render-lowzoom" do + description "Render low zoom tiles" + on_calendar "23:00 #{node[:timezone]}" +end + +if node[:vectortile][:rerender][:lowzoom][:enabled] + service "render-lowzoom.timer" do + action [:enable, :start] + end +else + service "render-lowzoom.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 new file mode 100644 index 000000000..cc8c87ae6 --- /dev/null +++ b/cookbooks/vectortile/templates/default/render-lowzoom.erb @@ -0,0 +1,10 @@ +#!/bin/sh +set -eu + +<%= @tilekiln_bin %> generate zooms \ +--source-dbname "<%= @source_database %>" \ +--storage-dbname "<%= @storage_database %>" \ +--num-threads "<%= node[:vectortile][:replication][:threads] %>" \ +--config <%= @config_path %> \ +--min-zoom <%= @min_zoom %> \ +--max-zoom <%= @max_zoom %> diff --git a/test/integration/vectortile/inspec/rerender_spec.rb b/test/integration/vectortile/inspec/rerender_spec.rb new file mode 100644 index 000000000..c5da181ec --- /dev/null +++ b/test/integration/vectortile/inspec/rerender_spec.rb @@ -0,0 +1,7 @@ +describe file("/usr/local/bin/render-lowzoom") do + it { should be_executable.by_user("tileupdate") } +end + +describe service("render-lowzoom") do + it { should be_installed } +end -- 2.39.5