From: Tom Hughes Date: Sat, 15 Sep 2018 13:29:52 +0000 (+0100) Subject: Merge remote-tracking branch 'github/pull/183' X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/388687b7120815bc61f49de6c5dd0ea793dad67b?hp=7b9bf6ef0f3f579947bb613da9ae648327fd7923 Merge remote-tracking branch 'github/pull/183' --- diff --git a/cookbooks/planet/attributes/default.rb b/cookbooks/planet/attributes/default.rb index 649d9b399..e888b5677 100644 --- a/cookbooks/planet/attributes/default.rb +++ b/cookbooks/planet/attributes/default.rb @@ -2,3 +2,5 @@ default[:planet][:dump][:xml_directory] = "/store/planet/planet" default[:planet][:dump][:xml_history_directory] = "/store/planet/planet/full-history" default[:planet][:dump][:pbf_directory] = "/store/planet/pbf" default[:planet][:dump][:pbf_history_directory] = "/store/planet/pbf/full-history" + +default[:planet][:current][:jobs] = {} diff --git a/cookbooks/planet/recipes/current.rb b/cookbooks/planet/recipes/current.rb new file mode 100644 index 000000000..919956d89 --- /dev/null +++ b/cookbooks/planet/recipes/current.rb @@ -0,0 +1,64 @@ +# +# Cookbook Name:: planet +# Recipe:: current +# +# Copyright 2018, 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. +# + +package %w[ + pyosmium +] + +template "/usr/local/bin/planet-update" do + source "planet-update.erb" + owner "root" + group "root" + mode 0o755 +end + +template "/usr/local/bin/planet-update-file" do + source "planet-update-file.erb" + owner "root" + group "root" + mode 0o755 +end + +directory "/var/lib/planet" do + owner "planet" + group "planet" + mode 0o755 +end + +remote_file "/var/lib/planet/planet.pbf" do + action :create_if_missing + source "https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf" + owner "planet" + group "planet" + mode 0o644 +end + +template "/etc/cron.d/planet-update" do + source "planet-update.cron.erb" + owner "root" + group "root" + mode 0o644 +end + +template "/etc/logrotate.d/planet-update" do + source "planet-update.logrotate.erb" + owner "root" + group "root" + mode 0o644 +end diff --git a/cookbooks/planet/templates/default/planet-update-file.erb b/cookbooks/planet/templates/default/planet-update-file.erb new file mode 100644 index 000000000..36786e232 --- /dev/null +++ b/cookbooks/planet/templates/default/planet-update-file.erb @@ -0,0 +1,30 @@ +#!/bin/sh + +# DO NOT EDIT - This file is being maintained by Chef + +# setup + +PLANETDIR="/var/lib/planet" +PLANETPREV="${PLANETDIR}/planet-previous.pbf" +PLANETCURR="${PLANETDIR}/planet.pbf" +PLANETNEW="${PLANETDIR}/planet-new.pbf" +PLANETTMP="${PLANETDIR}/planet-tmp.pbf" + +pyosmium-up-to-date -v -o "$PLANETNEW" "$PLANETCURR" +retval=$? + +while [ $retval -eq 1 ]; do + mv "$PLANETNEW" "$PLANETTMP" + pyosmium-up-to-date -v -o "$PLANETNEW" "$PLANETTMP" + retval=$? + rm "$PLANETTMP" +done + +if [ $retval -ne 0 ]; then + exit $retval +fi + +# cleanup + +mv "$PLANETCURR" "$PLANETPREV" +mv "$PLANETNEW" "$PLANETCURR" diff --git a/cookbooks/planet/templates/default/planet-update.cron.erb b/cookbooks/planet/templates/default/planet-update.cron.erb new file mode 100644 index 000000000..a12c53ec5 --- /dev/null +++ b/cookbooks/planet/templates/default/planet-update.cron.erb @@ -0,0 +1,3 @@ +# DO NOT EDIT - This file is being maintained by Chef + +17 1 * * * planet /usr/local/bin/planet-update diff --git a/cookbooks/planet/templates/default/planet-update.erb b/cookbooks/planet/templates/default/planet-update.erb new file mode 100644 index 000000000..d002b4fbe --- /dev/null +++ b/cookbooks/planet/templates/default/planet-update.erb @@ -0,0 +1,19 @@ +#!/bin/sh + +# DO NOT EDIT - This file is being maintained by Chef + +exec > /var/log/planet-update.log 2>&1 + +echo "Updating planet file..." + +runuser -u planet -- /usr/local/bin/planet-update-file + +echo "Running jobs..." +<% node[:planet][:current][:jobs].each do |job| -%> + +echo "Running '<%= job[:command] %>' as user '<%= job[:user] %>'..." + +runuser -u "<%= job[:user] %>" -- "<%= job[:command] %>" +<% end -%> + +echo "Done." diff --git a/cookbooks/planet/templates/default/planet-update.logrotate.erb b/cookbooks/planet/templates/default/planet-update.logrotate.erb new file mode 100644 index 000000000..a3ca8acec --- /dev/null +++ b/cookbooks/planet/templates/default/planet-update.logrotate.erb @@ -0,0 +1,5 @@ +/var/log/planet-update.log { + compress + notifempty + missingok +}