From 47addf9a676f8da1b4d0c22452feb12fd58758b4 Mon Sep 17 00:00:00 2001 From: Kimo Rosenbaum Date: Mon, 16 Jun 2014 23:41:43 -0700 Subject: [PATCH 1/4] Allow service_file mode to be changed --- manifests/init.pp | 6 +++++- manifests/params.pp | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/manifests/init.pp b/manifests/init.pp index dcd0a47..18f6941 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -25,6 +25,9 @@ # [*service_file*] # The location of the service file. Default: '/etc/init/uwsgi.conf' # +# [*service_file_mode*] +# The mode of the service file. Default: '0644' +# # [*service_template*] # The location of the template to generate the *service_file*. # Default: 'uwsgi/uwsgi_upstart.conf.erb' @@ -78,6 +81,7 @@ $package_provider = $uwsgi::params::package_provider, $service_name = $uwsgi::params::service_name, $service_file = $uwsgi::params::service_file, + $service_file_mode = $uwsgi::params::service_file_mode, $service_template = $uwsgi::params::service_template, $service_ensure = $uwsgi::params::service_ensure, $service_enable = $uwsgi::params::service_enable, @@ -131,7 +135,7 @@ ensure => $file_ensure, owner => 'root', group => 'root', - mode => '0644', + mode => $service_file_mode, replace => $manage_service_file, content => template($service_template), require => Package[$package_name] diff --git a/manifests/params.pp b/manifests/params.pp index e474275..fe53dee 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -11,6 +11,7 @@ $package_provider = 'pip' $service_name = 'uwsgi' $service_file = '/etc/init/uwsgi.conf' + $service_file_mode = '0644' $service_template = 'uwsgi/uwsgi_upstart.conf.erb' $service_ensure = true $service_enable = true From 286ff805b4192ffc44987e18398ef9651182c080 Mon Sep 17 00:00:00 2001 From: Kimo Rosenbaum Date: Mon, 16 Jun 2014 23:42:06 -0700 Subject: [PATCH 2/4] Add an init.d script template --- templates/uwsgi_service-redhat.erb | 84 ++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 templates/uwsgi_service-redhat.erb diff --git a/templates/uwsgi_service-redhat.erb b/templates/uwsgi_service-redhat.erb new file mode 100644 index 0000000..b21c867 --- /dev/null +++ b/templates/uwsgi_service-redhat.erb @@ -0,0 +1,84 @@ +#!/bin/sh +# This file is managed by puppet class 'uwsgi' +# +# uWSGI Emperor process init.d script +# +# chkconfig: - 85 15 +# description: uWSGI Emperor process init.d script + +### BEGIN INIT INFO +# Provides: uwsgi +# Required-Start: $local_fs $remote_fs $network +# Required-Stop: $local_fs $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: start and stop uwsgi +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +OPTIONS="--daemonize --die-on-term --ini <%= @config_file %>" + +[ -f /etc/sysconfig/uwsgi ] && . /etc/sysconfig/uwsgi + +RETVAL=0 +prog=uwsgi +lockfile=/var/lock/subsys/$prog + +start() { + [ "$EUID" != "0" ] && exit 4 + + # Start daemons. + echo -n $"Starting $prog: " + daemon $prog $OPTIONS + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch $lockfile + return $RETVAL +} + +stop() { + [ "$EUID" != "0" ] && exit 4 + + echo -n $"Shutting down $prog: " + killproc $prog + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f $lockfile + return $RETVAL +} + +reload() { + [ "$EUID" != "0" ] && exit 4 + + echo -n $"Reloading $prog: " + killproc $prog -HUP + RETVAL=$? + echo + return $RETVAL +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status $prog + ;; + restart) + stop + start + ;; + reload) + reload + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|reload}" + exit 2 + ;; +esac +exit $? From d8ab2cdf680b2f9733d8401a72104688c7bd8145 Mon Sep 17 00:00:00 2001 From: Kimo Rosenbaum Date: Wed, 18 Jun 2014 11:56:18 -0700 Subject: [PATCH 3/4] Allow $service_* to be auto-set based on $service_provider This is so one doesn't have to manually configure all $service_ variables but still can if they desire. --- manifests/init.pp | 43 +++++++++++++++++++++++++++++++++++-------- manifests/params.pp | 3 --- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index 18f6941..8e028ba 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -80,9 +80,9 @@ $package_ensure = $uwsgi::params::package_ensure, $package_provider = $uwsgi::params::package_provider, $service_name = $uwsgi::params::service_name, - $service_file = $uwsgi::params::service_file, - $service_file_mode = $uwsgi::params::service_file_mode, - $service_template = $uwsgi::params::service_template, + $service_file = undef, + $service_file_mode = undef, + $service_template = undef, $service_ensure = $uwsgi::params::service_ensure, $service_enable = $uwsgi::params::service_enable, $service_provider = $uwsgi::params::service_provider, @@ -131,13 +131,40 @@ require => Package[$package_name] } - file { $service_file: + if $service_file == undef { + $service_file_real = $service_provider ? { + redhat => '/etc/init.d/uwsgi', + upstart => '/etc/init/uwsgi.conf', + } + } else { + $service_file_real = $service_file + } + + if $service_file_mode == undef { + $service_file_mode_real = $service_provider ? { + redhat => '0555', + upstart => '0644', + } + } else { + $service_file_mode_real = $service_file_mode + } + + if $service_template == undef { + $service_template_real = $service_provider ? { + redhat => 'uwsgi/uwsgi_service-redhat.erb', + upstart => 'uwsgi/uwsgi_upstart.conf.erb', + } + } else { + $service_template_real = $service_template + } + + file { $service_file_real: ensure => $file_ensure, owner => 'root', group => 'root', - mode => $service_file_mode, + mode => $service_file_mode_real, replace => $manage_service_file, - content => template($service_template), + content => template($service_template_real), require => Package[$package_name] } @@ -158,11 +185,11 @@ require => [ Package[$package_name], File[$config_file], - File[$service_file] + File[$service_file_real] ], subscribe => [ File[$config_file], - File[$service_file] + File[$service_file_real] ] } diff --git a/manifests/params.pp b/manifests/params.pp index fe53dee..e8db922 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -10,9 +10,6 @@ $package_ensure = 'installed' $package_provider = 'pip' $service_name = 'uwsgi' - $service_file = '/etc/init/uwsgi.conf' - $service_file_mode = '0644' - $service_template = 'uwsgi/uwsgi_upstart.conf.erb' $service_ensure = true $service_enable = true $service_provider = 'upstart' From aedbf918d04297323304b180764c826f7672e9db Mon Sep 17 00:00:00 2001 From: Kimo Rosenbaum Date: Wed, 18 Jun 2014 11:58:04 -0700 Subject: [PATCH 4/4] Set pid and socket directories based on OS --- manifests/params.pp | 4 ++++ templates/uwsgi.ini.erb | 4 ++-- templates/uwsgi_service-redhat.erb | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/manifests/params.pp b/manifests/params.pp index e8db922..796e64f 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -22,11 +22,15 @@ case $::osfamily { redhat: { $app_directory = '/etc/uwsgi.d' + $pidfile = '/var/run/uwsgi/uwsgi.pid' $python_dev = 'python-devel' + $socket = '/var/run/uwsgi/uwsgi.socket' } default: { $app_directory = '/etc/uwsgi/apps-enabled' + $pidfile = '/run/uwsgi/uwsgi.pid' $python_dev = 'python-dev' + $socket = '/run/uwsgi/uwsgi.socket' } } } diff --git a/templates/uwsgi.ini.erb b/templates/uwsgi.ini.erb index 0ffc455..1bffb7e 100644 --- a/templates/uwsgi.ini.erb +++ b/templates/uwsgi.ini.erb @@ -4,8 +4,8 @@ # uWSGI main process configuration # [uwsgi] -socket = /run/uwsgi/uwsgi.socket -pidfile = /run/uwsgi/uwsgi.pid +socket = <%= @socket %> +pidfile = <%= @pidfile %> emperor = <%= @app_directory %> emperor-tyrant = true master = true diff --git a/templates/uwsgi_service-redhat.erb b/templates/uwsgi_service-redhat.erb index b21c867..4c49476 100644 --- a/templates/uwsgi_service-redhat.erb +++ b/templates/uwsgi_service-redhat.erb @@ -19,9 +19,24 @@ . /etc/rc.d/init.d/functions OPTIONS="--daemonize --die-on-term --ini <%= @config_file %>" +UWSGIPID="<%= @pidfile %>" +UWSGISOCKET="<%= @socket %>" + +UWSGIPIDDIR="${UWSGIPID%/*}" +UWSGISOCKETDIR="${UWSGISOCKET%/*}" [ -f /etc/sysconfig/uwsgi ] && . /etc/sysconfig/uwsgi +if [ ! -d "${UWSGIPIDDIR}" ]; then + mkdir -p "${UWSGIPIDDIR}" + [ -n "${RUNAS}" ] && chown "${RUNAS}:" "${UWSGIPIDDIR}" +fi + +if [ ! -d "${UWSGISOCKETDIR}" ]; then + mkdir -p "${UWSGISOCKETDIR}" + [ -n "${RUNAS}" ] && chown "${RUNAS}:" "${UWSGISOCKETDIR}" +fi + RETVAL=0 prog=uwsgi lockfile=/var/lock/subsys/$prog