+postgresql_version = node[:tile][:database][:cluster].split("/").first
+postgis_version = node[:tile][:database][:postgis]
+
+package "postgresql-#{postgresql_version}-postgis-#{postgis_version}"
+
+postgresql_user "jburgess" do
+ cluster node[:tile][:database][:cluster]
+ superuser true
+end
+
+postgresql_user "tomh" do
+ cluster node[:tile][:database][:cluster]
+ superuser true
+end
+
+postgresql_user "pnorman" do
+ cluster node[:tile][:database][:cluster]
+ superuser true
+end
+
+postgresql_user "tile" do
+ cluster node[:tile][:database][:cluster]
+end
+
+postgresql_user "www-data" do
+ cluster node[:tile][:database][:cluster]
+end
+
+postgresql_user "_renderd" do
+ cluster node[:tile][:database][:cluster]
+end
+
+postgresql_database "gis" do
+ cluster node[:tile][:database][:cluster]
+ owner "tile"
+end
+
+postgresql_extension "postgis" do
+ cluster node[:tile][:database][:cluster]
+ database "gis"
+end
+
+postgresql_extension "hstore" do
+ cluster node[:tile][:database][:cluster]
+ database "gis"
+ only_if { node[:tile][:database][:hstore] }
+end
+
+%w[geography_columns planet_osm_nodes planet_osm_rels planet_osm_ways raster_columns raster_overviews].each do |table|
+ postgresql_table table do
+ cluster node[:tile][:database][:cluster]
+ database "gis"
+ owner "tile"
+ permissions "tile" => :all
+ end
+end
+
+%w[geometry_columns planet_osm_line planet_osm_point planet_osm_polygon planet_osm_roads spatial_ref_sys].each do |table|
+ postgresql_table table do
+ cluster node[:tile][:database][:cluster]
+ database "gis"
+ owner "tile"
+ permissions "tile" => :all, "www-data" => :select, "_renderd" => :select
+ end
+end
+