|
41 | 41 | # [*service_provider*] |
42 | 42 | # The service provider. Default: 'upstart' |
43 | 43 | # 'upstart' is required for the default service_file, and |
44 | | -# works on RedHat >= 6 |
| 44 | +# works on RedHat 6. |
| 45 | +# 'systemd' works on RedHat 7. |
45 | 46 | # |
46 | 47 | # [*manage_service_file*] |
47 | 48 | # Whether to override the system service file if it exists. Default: true |
48 | 49 | # |
| 50 | +# [*binary_directory*] |
| 51 | +# Directory containing the uwsgi binary. Used by the 'systemd' |
| 52 | +# service_provider, but not 'upstart' or 'redhat'. |
| 53 | +# |
49 | 54 | # [*config_file*] |
50 | 55 | # The location of the uwsgi config file. Default: '/etc/uwsgi.ini' |
51 | 56 | # |
|
100 | 105 | $service_enable = $uwsgi::params::service_enable, |
101 | 106 | $service_provider = $uwsgi::params::service_provider, |
102 | 107 | $manage_service_file = $uwsgi::params::manage_service_file, |
| 108 | + $binary_directory = $uwsgi::params::binary_directory, |
103 | 109 | $config_file = $uwsgi::params::config_file, |
104 | 110 | $log_file = $uwsgi::params::log_file, |
105 | 111 | $log_rotate = $uwsgi::params::log_rotate, |
|
156 | 162 | $service_file_real = $service_provider ? { |
157 | 163 | redhat => '/etc/init.d/uwsgi', |
158 | 164 | upstart => '/etc/init/uwsgi.conf', |
| 165 | + systemd => '/etc/systemd/system/uwsgi.service', |
159 | 166 | default => '/etc/init/uwsgi.conf', |
160 | 167 | } |
161 | 168 | } else { |
|
166 | 173 | $service_file_mode_real = $service_provider ? { |
167 | 174 | redhat => '0555', |
168 | 175 | upstart => '0644', |
| 176 | + systemd => '0644', |
169 | 177 | default => '0644', |
170 | 178 | } |
171 | 179 | } else { |
|
176 | 184 | $service_template_real = $service_provider ? { |
177 | 185 | redhat => 'uwsgi/uwsgi_service-redhat.erb', |
178 | 186 | upstart => 'uwsgi/uwsgi_upstart.conf.erb', |
| 187 | + systemd => 'uwsgi/uwsgi_systemd.service.erb', |
179 | 188 | default => 'uwsgi/uwsgi_upstart.conf.erb', |
180 | 189 | } |
181 | 190 | } else { |
|
192 | 201 | require => Package[$package_name] |
193 | 202 | } |
194 | 203 | $required_files = [ $config_file, $service_file_real ] |
| 204 | + |
| 205 | + if $service_provider == 'systemd' { |
| 206 | + exec { 'uwsgi-reload-systemd': |
| 207 | + command => '/bin/systemctl daemon-reload', |
| 208 | + refreshonly => true, |
| 209 | + subscribe => File[$service_file_real], |
| 210 | + before => Service[$service_name], |
| 211 | + } |
| 212 | + } |
195 | 213 | } else { |
196 | 214 | $required_files = $config_file |
197 | 215 | } |
198 | 216 |
|
| 217 | + $log_directory = dirname($log_file) |
| 218 | + $pid_directory = dirname($pidfile) |
| 219 | + $socket_directory = dirname($socket) |
| 220 | + |
| 221 | + exec { $log_directory: |
| 222 | + creates => $log_directory, |
| 223 | + command => "mkdir -p ${log_directory}", |
| 224 | + path => $::path |
| 225 | + } -> file { $log_directory: } |
| 226 | + |
| 227 | + exec { $pid_directory: |
| 228 | + creates => $pid_directory, |
| 229 | + command => "mkdir -p ${pid_directory}", |
| 230 | + path => $::path |
| 231 | + } -> file { $pid_directory: } |
| 232 | + |
| 233 | + if $socket_directory != $pid_directory { |
| 234 | + exec { $socket_directory: |
| 235 | + creates => $socket_directory, |
| 236 | + command => "mkdir -p ${socket_directory}", |
| 237 | + path => $::path |
| 238 | + } -> file { $socket_directory: } |
| 239 | + } |
| 240 | + |
199 | 241 | file { $app_directory: |
200 | 242 | ensure => 'directory', |
201 | 243 | owner => 'root', |
|
212 | 254 | provider => $service_provider, |
213 | 255 | require => [ |
214 | 256 | Package[$package_name], |
215 | | - File[$required_files] |
| 257 | + File[$required_files], |
| 258 | + File[$log_directory], |
| 259 | + File[$pid_directory], |
| 260 | + File[$socket_directory], |
216 | 261 | ], |
217 | 262 | subscribe => File[$required_files] |
218 | 263 | } |
|
0 commit comments