Bring replication diffs under chef control
authorTom Hughes <tom@compton.nu>
Wed, 3 Jul 2013 21:15:15 +0000 (22:15 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 3 Jul 2013 21:22:48 +0000 (22:22 +0100)
cookbooks/planet/metadata.rb
cookbooks/planet/recipes/replication.rb [new file with mode: 0644]
cookbooks/planet/templates/default/replication.auth.erb [new file with mode: 0644]
cookbooks/planet/templates/default/replication.config.erb [new file with mode: 0644]
cookbooks/planet/templates/default/replication.cron.erb [new file with mode: 0644]
roles/planet.rb

index 23b90473dbea0dbe000479a83b7ed50afe5ec8ec..ea3eecd2e395c5a8a185e9f2f4aa3068ff3ea4b2 100644 (file)
@@ -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 (file)
index 0000000..f055280
--- /dev/null
@@ -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 (file)
index 0000000..8486e0e
--- /dev/null
@@ -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 (file)
index 0000000..7ac5ac5
--- /dev/null
@@ -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 (file)
index 0000000..9fb284a
--- /dev/null
@@ -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
index 88cc5c1b5e367b29d62a66a29bf1e118713e059f..4c2045388d620f61f4070b3b01b5e0f9c4050166 100644 (file)
@@ -44,6 +44,7 @@ default_attributes(
 
 run_list(
   "recipe[planet]",
+  "recipe[planet::replication]",
   "recipe[nfs::server]",
   "recipe[rsyncd]"
 )