|
2 | 2 | # |
3 | 3 | # @param ensure Removes an entry if set to 'absent'. |
4 | 4 | # @param value Defines the value for the setting. |
5 | | -# @param path Path for postgresql.conf |
| 5 | +# @param path Path for postgresql.conf |
6 | 6 | # |
7 | 7 | define postgresql::server::config_entry ( |
8 | 8 | Enum['present', 'absent'] $ensure = 'present', |
|
70 | 70 | 'max_pred_locks_per_transaction' => undef, |
71 | 71 | } |
72 | 72 |
|
73 | | - Exec { |
74 | | - logoutput => 'on_failure', |
75 | | - } |
76 | | - |
77 | 73 | if ! ($name in $requires_restart_until and ( |
78 | 74 | ! $requires_restart_until[$name] or |
79 | 75 | versioncmp($postgresql::server::_version, $requires_restart_until[$name]) < 0 |
|
91 | 87 | } |
92 | 88 | } |
93 | 89 |
|
94 | | - # We have to handle ports and the data directory in a weird and |
95 | | - # special way. On early Debian and Ubuntu and RHEL we have to ensure |
96 | | - # we stop the service completely. On RHEL 7 we either have to create |
97 | | - # a systemd override for the port or update the sysconfig file, but this |
98 | | - # is managed for us in postgresql::server::config. |
99 | | - if $facts['os']['name'] == 'Debian' or $facts['os']['name'] == 'Ubuntu' { |
100 | | - if $name == 'data_directory' { |
101 | | - $stop_command = ['service', $postgresql::server::service_name, 'stop'] |
102 | | - $stop_onlyif = ['service', $postgresql::server::service_name, 'status'] |
103 | | - $stop_unless = [['grep', "data_directory = '${value}'", $postgresql::server::postgresql_conf_path]] |
104 | | - exec { "postgresql_stop_${name}": |
105 | | - command => $stop_command, |
106 | | - onlyif => $stop_onlyif, |
107 | | - unless => $stop_unless, |
108 | | - path => '/usr/sbin:/sbin:/bin:/usr/bin:/usr/local/bin', |
109 | | - before => Postgresql_conf[$name], |
110 | | - } |
111 | | - } |
112 | | - } elsif $facts['os']['family'] == 'RedHat' and versioncmp($facts['os']['release']['major'], '7') < 0 { |
113 | | - if $name == 'port' { |
114 | | - # We need to force postgresql to stop before updating the port |
115 | | - # because puppet becomes confused and is unable to manage the |
116 | | - # service appropriately. |
117 | | - $stop_command = ['service', $postgresql::server::service_name, 'stop'] |
118 | | - $stop_onlyif = ['service', $postgresql::server::service_name, 'status'] |
119 | | - $stop_unless = "grep 'PGPORT=${shell_escape($value)}' /etc/sysconfig/pgsql/postgresql" |
120 | | - exec { "postgresql_stop_${name}": |
121 | | - command => $stop_command, |
122 | | - onlyif => $stop_onlyif, |
123 | | - unless => $stop_unless, |
124 | | - path => '/sbin:/bin:/usr/bin:/usr/local/bin', |
125 | | - require => File['/etc/sysconfig/pgsql/postgresql'], |
126 | | - } |
127 | | - -> augeas { 'override PGPORT in /etc/sysconfig/pgsql/postgresql': |
128 | | - lens => 'Shellvars.lns', |
129 | | - incl => '/etc/sysconfig/pgsql/postgresql', |
130 | | - context => '/files/etc/sysconfig/pgsql/postgresql', |
131 | | - changes => "set PGPORT ${value}", |
132 | | - require => File['/etc/sysconfig/pgsql/postgresql'], |
133 | | - notify => Class['postgresql::server::service'], |
134 | | - before => Class['postgresql::server::reload'], |
135 | | - } |
136 | | - } elsif $name == 'data_directory' { |
137 | | - # We need to force postgresql to stop before updating the data directory |
138 | | - # otherwise init script breaks |
139 | | - $stop_command = ['service', $postgresql::server::service_name, 'stop'] |
140 | | - $stop_onlyif = ['service', $postgresql::server::service_name, 'status'] |
141 | | - $stop_unless = [['grep', "PGDATA=${value}", '/etc/sysconfig/pgsql/postgresql']] |
142 | | - exec { "postgresql_${name}": |
143 | | - command => $stop_command, |
144 | | - onlyif => $stop_onlyif, |
145 | | - unless => $stop_unless, |
146 | | - path => '/sbin:/bin:/usr/bin:/usr/local/bin', |
147 | | - require => File['/etc/sysconfig/pgsql/postgresql'], |
148 | | - } |
149 | | - -> augeas { 'override PGDATA in /etc/sysconfig/pgsql/postgresql': |
150 | | - lens => 'Shellvars.lns', |
151 | | - incl => '/etc/sysconfig/pgsql/postgresql', |
152 | | - context => '/files/etc/sysconfig/pgsql/postgresql', |
153 | | - changes => "set PGDATA ${value}", |
154 | | - require => File['/etc/sysconfig/pgsql/postgresql'], |
155 | | - notify => Class['postgresql::server::service'], |
156 | | - before => Class['postgresql::server::reload'], |
157 | | - } |
158 | | - } |
159 | | - } |
160 | | - |
161 | 90 | postgresql_conf { $name: |
162 | 91 | ensure => $ensure, |
163 | 92 | target => $target, |
|
0 commit comments