+# Note: tablespaces must be exactly in the same location on each
+# Nominatim instance when replication is in use. Therefore
+# use symlinks to canonical directory locations.
+node[:nominatim][:tablespaces].each do |name, location|
+ directory location do
+ owner "postgres"
+ group "postgres"
+ mode 0o700
+ recursive true
+ end
+
+ link "#{basedir}/tablespaces/#{name}" do
+ to location
+ end
+
+ postgresql_tablespace name do
+ cluster node[:nominatim][:dbcluster]
+ location "#{basedir}/tablespaces/#{name}"
+ end
+end
+
+if node[:nominatim][:state] == "master" # ~FC023
+ postgresql_user "replication" do
+ cluster node[:nominatim][:dbcluster]
+ password data_bag_item("nominatim", "passwords")["replication"]
+ replication true
+ end
+
+ directory node[:rsyncd][:modules][:archive][:path] do
+ owner "postgres"
+ group "postgres"
+ mode 0o700
+ end
+
+ template "/usr/local/bin/clean-db-nominatim" do
+ source "clean-db-nominatim.erb"
+ owner "root"
+ group "root"
+ mode 0o755
+ variables :archive_dir => node[:rsyncd][:modules][:archive][:path],
+ :update_stop_file => "#{basedir}/status/updates_disabled",
+ :streaming_clients => search(:node, "nominatim_state:slave").map { |slave| slave[:fqdn] }.join(" ")
+ end
+end
+
+## Nominatim backend
+
+include_recipe "git"
+include_recipe "python"
+