Bring streaming replication under chef control
authorTom Hughes <tom@compton.nu>
Tue, 9 Jul 2013 21:50:55 +0000 (22:50 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 9 Jul 2013 21:50:55 +0000 (22:50 +0100)
cookbooks/planet/files/default/replication-bin/streaming-replicator [new file with mode: 0644]
cookbooks/planet/files/default/replication-bin/streaming-server [new file with mode: 0644]
cookbooks/planet/recipes/replication.rb
cookbooks/planet/templates/default/streaming.init.erb [new file with mode: 0644]

diff --git a/cookbooks/planet/files/default/replication-bin/streaming-replicator b/cookbooks/planet/files/default/replication-bin/streaming-replicator
new file mode 100644 (file)
index 0000000..6af3f38
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# DO NOT EDIT - This file is being maintained by Chef
+
+export TZ=UTC
+
+exec >> /var/log/replication/streaming-replicator 2>&1
+
+exec /usr/local/bin/osmosis -q \
+  --replicate-apidb iterations=0 minInterval=10000 maxInterval=60000 authFile=/etc/replication/auth.conf \
+  --send-replication-sequence port=8081 \
+  --write-replication workingDirectory=/var/lib/replication/streaming
diff --git a/cookbooks/planet/files/default/replication-bin/streaming-server b/cookbooks/planet/files/default/replication-bin/streaming-server
new file mode 100644 (file)
index 0000000..11394ae
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# DO NOT EDIT - This file is being maintained by Chef
+
+export TZ=UTC
+
+exec >> /var/log/replication/streaming-server 2>&1
+
+exec /usr/local/bin/osmosis -q \
+  --send-replication-data dataDirectory=/var/lib/replication/streaming port=8080 notificationPort=8081
index f1d06b5e1046781cd510a948b83a02918ff57f85..8a3061fb47471802e154399c68fda52b6c787bd4 100644 (file)
@@ -140,3 +140,31 @@ template "/etc/cron.d/replication" do
   group "root"
   mode 0644
 end
+
+directory "/var/lib/replication/streaming" do
+  owner "planet"
+  group "planet"
+  mode 0755
+end
+
+directory "/var/log/replication" do
+  owner "planet"
+  group "planet"
+  mode 0755
+end
+
+[ "streaming-replicator", "streaming-server" ].each do |name|
+  template "/etc/init.d/#{name}" do
+    source "streaming.init.erb"
+    owner "root"
+    group "root"
+    mode 0755
+    variables :service => name
+  end
+
+  service name do
+    action [ :enable, :start ]
+    supports :restart => true, :status => true
+    subscribes :restart, "template[/etc/init.d/#{name}]"
+  end
+end
diff --git a/cookbooks/planet/templates/default/streaming.init.erb b/cookbooks/planet/templates/default/streaming.init.erb
new file mode 100644 (file)
index 0000000..85ed3ef
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# DO NOT EDIT - This file is being maintained by Chef
+
+start() {
+  start-stop-daemon --start --chuid planet --background --make-pidfile --pidfile /var/run/<%= @service %>.pid --exec /usr/local/bin/<%= @service %>
+}
+
+stop() {
+  start-stop-daemon --stop --retry 300 --pidfile /var/run/<%= @service %>.pid
+}
+
+status() {
+  start-stop-daemon --status --pidfile /var/run/<%= @service %>.pid
+}
+
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  restart)
+    stop || exit $?
+    start
+    ;;
+  status)
+    status
+    ;;
+esac