]> git.openstreetmap.org Git - chef.git/commitdiff
Merge remote-tracking branch 'github/pull/183'
authorTom Hughes <tom@compton.nu>
Sat, 15 Sep 2018 13:29:52 +0000 (14:29 +0100)
committerTom Hughes <tom@compton.nu>
Sat, 15 Sep 2018 13:29:52 +0000 (14:29 +0100)
cookbooks/planet/attributes/default.rb
cookbooks/planet/recipes/current.rb [new file with mode: 0644]
cookbooks/planet/templates/default/planet-update-file.erb [new file with mode: 0644]
cookbooks/planet/templates/default/planet-update.cron.erb [new file with mode: 0644]
cookbooks/planet/templates/default/planet-update.erb [new file with mode: 0644]
cookbooks/planet/templates/default/planet-update.logrotate.erb [new file with mode: 0644]

index 649d9b399df80c498505568531b395442c285c3b..e888b56771753b07ffe0181df39dde1c45cd06a4 100644 (file)
@@ -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 (file)
index 0000000..919956d
--- /dev/null
@@ -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 (file)
index 0000000..36786e2
--- /dev/null
@@ -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 (file)
index 0000000..a12c53e
--- /dev/null
@@ -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 (file)
index 0000000..d002b4f
--- /dev/null
@@ -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 (file)
index 0000000..a3ca8ac
--- /dev/null
@@ -0,0 +1,5 @@
+/var/log/planet-update.log {
+       compress
+       notifempty
+       missingok
+}