From 4166e6d35cf8c114805a3da2f8b39ad1f26de6df Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 27 Jan 2016 21:51:19 +0000 Subject: [PATCH] Move db-slave and nominatim-slave roles to public repository --- cookbooks/postgresql/recipes/default.rb | 13 ++++++-- .../templates/default/recovery.conf.erb | 10 +++--- roles/db-slave.rb | 27 ++++++++++++++++ roles/nominatim-slave.rb | 31 +++++++++++++++++++ 4 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 roles/db-slave.rb create mode 100644 roles/nominatim-slave.rb diff --git a/cookbooks/postgresql/recipes/default.rb b/cookbooks/postgresql/recipes/default.rb index a0d9f0e90..d94b29a0e 100644 --- a/cookbooks/postgresql/recipes/default.rb +++ b/cookbooks/postgresql/recipes/default.rb @@ -64,16 +64,25 @@ node[:postgresql][:versions].each do |version| to "/etc/ssl/private/ssl-cert-snakeoil.key" end - restore_command = settings[:restore_command] || defaults[:restore_command] standby_mode = settings[:standby_mode] || defaults[:standby_mode] + primary_conninfo = settings[:primary_conninfo] || defaults[:primary_conninfo] + restore_command = settings[:restore_command] || defaults[:restore_command] if restore_command || standby_mode == "on" + passwords = if primary_conninfo + data_bag_item(primary_conninfo[:passwords][:bag], + primary_conninfo[:passwords][:item]) + end + template "/var/lib/postgresql/#{version}/main/recovery.conf" do source "recovery.conf.erb" owner "postgres" group "postgres" mode 0640 - variables :defaults => defaults, :settings => settings + variables :standby_mode => standby_mode, + :primary_conninfo => primary_conninfo, + :restore_command => restore_command, + :passwords => passwords notifies :reload, "service[postgresql]" end else diff --git a/cookbooks/postgresql/templates/default/recovery.conf.erb b/cookbooks/postgresql/templates/default/recovery.conf.erb index f7628906c..00f6eab9d 100644 --- a/cookbooks/postgresql/templates/default/recovery.conf.erb +++ b/cookbooks/postgresql/templates/default/recovery.conf.erb @@ -1,9 +1,9 @@ # DO NOT EDIT - This file is being maintained by Chef -standby_mode = <%= @settings[:standby_mode] || @defaults[:standby_mode] %> -<% if @settings[:primary_conninfo] || @defaults[:primary_conninfo] -%> -primary_conninfo = '<%= @settings[:primary_conninfo] || @defaults[:primary_conninfo] %>' +standby_mode = <%= @standby_mode %> +<% if @primary_conninfo -%> +primary_conninfo = 'host=<%= @primary_conninfo[:host] %> port=<%= @primary_conninfo[:port] %> user=<%= @primary_conninfo[:user] %> password=<%= @passwords[@primary_conninfo[:user]] %>' <% end -%> -<% if @settings[:restore_command] || @defaults[:restore_command] -%> -restore_command = '<%= @settings[:restore_command] || @defaults[:restore_command] %>' +<% if @restore_command -%> +restore_command = '<%= @restore_command %>' <% end -%> diff --git a/roles/db-slave.rb b/roles/db-slave.rb new file mode 100644 index 000000000..cdc828def --- /dev/null +++ b/roles/db-slave.rb @@ -0,0 +1,27 @@ +name "db-slave" +description "Role applied to all slave database servers" + +default_attributes( + :postgresql => { + :versions => ["9.1"], + :settings => { + :defaults => { + :hot_standby => "on", + :hot_standby_feedback => "on", + :standby_mode => "on", + :primary_conninfo => { + :host => "katla", + :port => "5432", + :user => "replication", + :passwords => { :bag => "db", :item => "passwords" } + }, + :restore_command => "/usr/bin/rsync katla::archive/%f %p" + } + } + } +) + +run_list( + "role[db]", + "recipe[db::slave]" +) diff --git a/roles/nominatim-slave.rb b/roles/nominatim-slave.rb new file mode 100644 index 000000000..3175a9553 --- /dev/null +++ b/roles/nominatim-slave.rb @@ -0,0 +1,31 @@ +name "nominatim-slave" +description "Role applied to all slave nominatim servers" + +default_attributes( + :postgresql => { + :versions => ["9.3"], + :settings => { + :defaults => { + :hot_standby => "on", + :hot_standby_feedback => "on", + :standby_mode => "on", + :primary_conninfo => { + :host => "pummelzacken.ucl.openstreetmap.org", + :port => "5432", + :user => "replication", + :passwords => { :bag => "nominatim", :item => "passwords" } + }, + :restore_command => "/usr/bin/rsync pummelzacken.ucl.openstreetmap.org::archive/%f %p" + } + } + }, + :nominatim => { + :enable_backup => false + } + +) + +run_list( + "role[nominatim]", + "recipe[nominatim::slave]" +) -- 2.43.2