File tree Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Original file line number Diff line number Diff line change 15
15
$version = $postgresql::server::_version
16
16
$manage_pg_hba_conf = $postgresql::server::manage_pg_hba_conf
17
17
$manage_pg_ident_conf = $postgresql::server::manage_pg_ident_conf
18
+ $datadir = $postgresql::server::datadir
18
19
19
20
if ($manage_pg_hba_conf == true ) {
20
21
# Prepare the main pg_hba file
100
101
postgresql::server::config_entry { 'port' :
101
102
value => $port ,
102
103
}
104
+ postgresql::server::config_entry { 'data_directory' :
105
+ value => $datadir ,
106
+ }
103
107
104
108
# RedHat-based systems hardcode some PG* variables in the init script, and need to be overriden
105
109
# in /etc/sysconfig/pgsql/postgresql. Create a blank file so we can manage it with augeas later.
Original file line number Diff line number Diff line change 86
86
notify => Class[' postgresql::server::service' ],
87
87
before => Class[' postgresql::server::reload' ],
88
88
}
89
+ } else {
90
+ if $name == ' data_directory' {
91
+ # We need to force postgresql to stop before updating the data directory
92
+ # otherwise init script breaks
93
+ exec { "postgresql_${name}" :
94
+ command => " service ${::postgresql::server::service_name} stop" ,
95
+ onlyif => " service ${::postgresql::server::service_name} status" ,
96
+ unless => " grep 'PGDATA=${value} ' /etc/sysconfig/pgsql/postgresql" ,
97
+ path => ' /sbin:/bin:/usr/bin:/usr/local/bin' ,
98
+ require => File [' /etc/sysconfig/pgsql/postgresql' ],
99
+ } ->
100
+ augeas { 'override PGDATA in /etc/sysconfig/pgsql/postgresql' :
101
+ lens => ' Shellvars.lns' ,
102
+ incl => ' /etc/sysconfig/pgsql/*' ,
103
+ context => ' /files/etc/sysconfig/pgsql/postgresql' ,
104
+ changes => " set PGDATA ${value} " ,
105
+ require => File [' /etc/sysconfig/pgsql/postgresql' ],
106
+ notify => Class[' postgresql::server::service' ],
107
+ before => Class[' postgresql::server::reload' ],
108
+ }
109
+ }
89
110
}
90
111
}
91
112
}
Original file line number Diff line number Diff line change
1
+ require 'spec_helper_acceptance'
2
+
3
+ # These tests ensure that postgres can change itself to an alternative pgdata
4
+ # location properly.
5
+ describe 'postgres::server' , :unless => UNSUPPORTED_PLATFORMS . include? ( fact ( 'osfamily' ) ) do
6
+ it 'on an alternative pgdata location' do
7
+ pp = <<-EOS
8
+ class { 'postgresql::server': datadir => '/var/pgsql' }
9
+ EOS
10
+
11
+ apply_manifest ( pp , :catch_failures => true )
12
+ apply_manifest ( pp , :catch_changes => true )
13
+ end
14
+
15
+ it 'can connect with psql' do
16
+ psql ( '--command="\l" postgres' , 'postgres' ) do |r |
17
+ expect ( r . stdout ) . to match ( /List of databases/ )
18
+ end
19
+ end
20
+
21
+ end
You can’t perform that action at this time.
0 commit comments