+class profile::postgresql {
+ $password_seed = lookup("base_installation::puppet_pass_seed") |$key| { {} }
+
+ class { '::postgresql::globals':
+ encoding => 'UTF-8',
+ locale => 'en_US.UTF-8',
+ pg_hba_conf_defaults => false,
+ }
+
+ # FIXME: get it from the postgresql module?
+ $pg_user = "postgres"
+
+ class { '::postgresql::client': }
+
+ # FIXME: postgresql module is buggy and doesn't create dir?
+ file { "/var/lib/postgres":
+ ensure => directory,
+ owner => $pg_user,
+ group => $pg_user,
+ before => File["/var/lib/postgres/data"],
+ require => Package["postgresql-server"],
+ }
+
+ class { '::postgresql::server':
+ postgres_password => generate_password(24, $password_seed, "postgres")
+ }
+
+ postgresql::server::pg_hba_rule { 'local access as postgres user':
+ description => 'Allow local access to postgres user',
+ type => 'local',
+ database => 'all',
+ user => $pg_user,
+ auth_method => 'ident',
+ order => "a1",
+ }
+ postgresql::server::pg_hba_rule { 'deny access to postgresql user':
+ description => 'Deny remote access to postgres user',
+ type => 'host',
+ database => 'all',
+ user => $pg_user,
+ address => "0.0.0.0/0",
+ auth_method => 'reject',
+ order => "a2",
+ }
+
+ postgresql::server::pg_hba_rule { 'local access':
+ description => 'Allow local access with password',
+ type => 'local',
+ database => 'all',
+ user => 'all',
+ auth_method => 'md5',
+ order => "b1",
+ }
+
+ postgresql::server::pg_hba_rule { 'local access with same name':
+ description => 'Allow local access with same name',
+ type => 'local',
+ database => 'all',
+ user => 'all',
+ auth_method => 'ident',
+ order => "b2",
+ }
+
+}
+