From d6577fc4c50eae4f698f176a8bc1b53996241627 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 3 Jul 2013 22:15:15 +0100 Subject: [PATCH 1/1] Bring replication diffs under chef control --- cookbooks/planet/metadata.rb | 2 + cookbooks/planet/recipes/replication.rb | 85 +++++++++++++++++++ .../templates/default/replication.auth.erb | 16 ++++ .../templates/default/replication.config.erb | 11 +++ .../templates/default/replication.cron.erb | 8 ++ roles/planet.rb | 1 + 6 files changed, 123 insertions(+) create mode 100644 cookbooks/planet/recipes/replication.rb create mode 100644 cookbooks/planet/templates/default/replication.auth.erb create mode 100644 cookbooks/planet/templates/default/replication.config.erb create mode 100644 cookbooks/planet/templates/default/replication.cron.erb diff --git a/cookbooks/planet/metadata.rb b/cookbooks/planet/metadata.rb index 23b90473d..ea3eecd2e 100644 --- a/cookbooks/planet/metadata.rb +++ b/cookbooks/planet/metadata.rb @@ -5,3 +5,5 @@ description "Installs and configures a planet server" long_description IO.read(File.join(File.dirname(__FILE__), 'README.rdoc')) version "1.0.0" depends "apache" +depends "git" +depends "osmosis" diff --git a/cookbooks/planet/recipes/replication.rb b/cookbooks/planet/recipes/replication.rb new file mode 100644 index 000000000..f055280f1 --- /dev/null +++ b/cookbooks/planet/recipes/replication.rb @@ -0,0 +1,85 @@ +# +# Cookbook Name:: planet +# Recipe:: dump +# +# Copyright 2013, 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 +# +# http://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. +# + +include_recipe "osmosis" + +db_passwords = data_bag_item("db", "passwords") + +directory "/etc/replication" do + owner "root" + group "root" + mode 0755 +end + +template "/etc/replication/auth.conf" do + source "replication.auth.erb" + user "root" + group "planet" + mode 0640 + variables :password => db_passwords["planetdiff"] +end + +directory "/var/lib/replication" do + owner "planet" + group "planet" + mode 0755 +end + +directory "/var/lib/replication/hour" do + owner "planet" + group "planet" + mode 0755 +end + +template "/var/lib/replication/hour/configuration.txt" do + source "replication.config.erb" + owner "planet" + group "planet" + mode 0644 + variables :base => "minute", :interval => 3600 +end + +link "/var/lib/replication/hour/data" do + to "/store/planet/replication/hour" +end + +directory "/var/lib/replication/day" do + owner "planet" + group "planet" + mode 0755 +end + +template "/var/lib/replication/hour/configuration.txt" do + source "replication.config.erb" + owner "planet" + group "planet" + mode 0644 + variables :base => "hour", :interval => 86400 +end + +link "/var/lib/replication/day/data" do + to "/store/planet/replication/day" +end + +template "/etc/cron.d/replication" do + source "replication.cron.erb" + owner "root" + group "root" + mode 0644 +end diff --git a/cookbooks/planet/templates/default/replication.auth.erb b/cookbooks/planet/templates/default/replication.auth.erb new file mode 100644 index 000000000..8486e0ee3 --- /dev/null +++ b/cookbooks/planet/templates/default/replication.auth.erb @@ -0,0 +1,16 @@ +# DO NOT EDIT - This file is being maintained by Chef + +# The database host system +host=db + +# The database instance +database=openstreetmap + +# The database user +user=planetdiff + +# The database password +password=<%= @password =%> + +# The database type +dbType=postgresql diff --git a/cookbooks/planet/templates/default/replication.config.erb b/cookbooks/planet/templates/default/replication.config.erb new file mode 100644 index 000000000..7ac5ac58a --- /dev/null +++ b/cookbooks/planet/templates/default/replication.config.erb @@ -0,0 +1,11 @@ +# DO NOT EDIT - This file is being maintained by Chef + +# The URL of the directory containing change files. +baseUrl=http://planet.openstreetmap.org/replication/<%= @base %> + +# The length of an extraction interval in seconds (3600 = 1 hour). +intervalLength=<%= @interval %> + +# Defines the maximum time interval in seconds to download in a single invocation. +# Setting to 0 disables this feature. +maxInterval=<%= @interval * 10 %> diff --git a/cookbooks/planet/templates/default/replication.cron.erb b/cookbooks/planet/templates/default/replication.cron.erb new file mode 100644 index 000000000..9fb284a00 --- /dev/null +++ b/cookbooks/planet/templates/default/replication.cron.erb @@ -0,0 +1,8 @@ +# DO NOT EDIT - This file is being maintained by Chef + +MAILTO=brett@bretth.com +TZ=UTC + +* * * * * planet /usr/local/bin/osmosis -q --replicate-apidb authFile=/etc/replication/auth.conf allowIncorrectSchemaVersion=true --write-replication workingDirectory=/store/planet/replication/minute +2 * * * * planet /usr/local/bin/osmosis -q --merge-replication-files workingDirectory=/var/lib/replication/hour +5 * * * * planet /usr/local/bin/osmosis -q --merge-replication-files workingDirectory=/var/lib/replication/day diff --git a/roles/planet.rb b/roles/planet.rb index 88cc5c1b5..4c2045388 100644 --- a/roles/planet.rb +++ b/roles/planet.rb @@ -44,6 +44,7 @@ default_attributes( run_list( "recipe[planet]", + "recipe[planet::replication]", "recipe[nfs::server]", "recipe[rsyncd]" ) -- 2.43.2