phpservermon/puphpet/puppet/modules/puppi/manifests/runscript.pp

155 lines
4.5 KiB
Puppet

# = Define: puppi::runscript
#
# This define creates, executes and optionally crontabs a
# simple whose content is directly managed by arguments.
# The script content is provided either with $source or $content arguments.
# It's placed in:
# $destination_path , if provided, or in /usr/local/sbin/${name}
#
# Cron execution times are defined by the $cron argument (Default empty).
# Automatic execution of the script via Puppet is managed by the $autorun
# parameter (default: true).
# Conditional execution of the script at subsequent puppet runs is
# defined by the $refreshonly, $creates, $unless $onlyif parameters
# that map the omonimous exec type arguments.
#
# == Parameters:
#
# [*source*]
# String. Optional. Default: undef. Alternative to content.
# Source of the script file to provide for execuution.
# Sample: source => 'puppet:///modules/site/scripts/my_script',
#
# [*content*]
# String. Optional. Default: undef. Alternative to source.
# Content of the script file to provide for execuution.
# This parameter is alternative to source.
# Sample: content => 'template(site/scripts/my_script.erb'),
#
# [*destination_path*]
# String. Optional. Default: ''
# Path of the provided script. If not provided the script in saved in
# /usr/local/sbin/${name}
#
# [*parameters*]
# String. Optional. Default: ''
# Optional parameters to pass to the script when executing it.
#
# [*autorun*]
# Boolean. Default: true.
# Define if to automatically execute the script when Puppet runs.
#
# [*refreshonly*]
# Boolen. Optional. Default: true
# Defines the logic of execution of the script when Puppet runs.
# Maps to the omonymous Exec type argument.
#
# [*creates*]
# String. Optional. Default: undef
# Defines the logic of execution of the script when Puppet runs.
# Maps to the omonymous Exec type argument.
#
# [*onlyif*]
# String. Optional. Default: undef
# Defines the logic of execution of the script when Puppet runs.
# Maps to the omonymous Exec type argument.
#
# [*unless*]
# String. Optional. Default: undef
# Defines the logic of execution of the script when Puppet runs.
# Maps to the omonymous Exec type argument.
#
# [*basedir*]
# String. Optional. Default: /usr/local/sbin
# Directory where the runscript scripts are created when destination_path
# is empty.
#
# [*cron*]
# String. Optional. Default: ''
# Optional cron schedule to crontab the execution of the
# script. Format must be in standard cron style.
# Example: '0 4 * * *' .
# By default no cron is scheduled.
#
# [*cron_user*]
# String. Optional. Default: 'root'
# When cron is enabled the user that executes the cron job.
#
# [*owner*]
# Owner of the created script. Default: root.
#
# [*group*]
# Group of the created script. Default: root.
#
# [*mode*]
# Mode of the created script. Default: '7550'.
# NOTE: Keep the execution flag!
#
# [*ensure*]
# Define if the runscript script and eventual cron job
# must be present or absent. Default: present.
#
# == Examples
#
# - Minimal setup
# puppi::runscript { 'my_script':
# source => 'puppet:///modules/site/scripts/my_script.sh',
# destination_path => '/usr/local/bin/my_script.sh',
# }
#
define puppi::runscript (
$source = undef,
$content = undef,
$destination_path = '',
$parameters = '',
$autorun = true,
$refreshonly = true,
$creates = undef,
$onlyif = undef,
$unless = undef,
$basedir = '/usr/local/sbin',
$cron = '',
$cron_user = 'root',
$owner = 'root',
$group = 'root',
$mode = '0755',
$ensure = 'present' ) {
$real_command = $destination_path ? {
'' => "${basedir}/${name}",
default => $destination_path,
}
file { "runscript_${name}":
ensure => $ensure,
path => $real_command,
mode => $mode,
owner => $owner,
group => $group,
content => $content,
source => $source,
}
if $autorun == true {
exec { "runscript_${name}":
command => $real_command,
refreshonly => $refreshonly,
creates => $creates,
onlyif => $onlyif,
unless => $unless,
subscribe => File["runscript_${name}"],
}
}
if $cron != '' {
file { "runscript_cron_${name}":
ensure => $ensure,
path => "/etc/cron.d/runscript_${name}",
mode => '0644',
owner => 'root',
group => 'root',
content => "${cron} ${cron_user} ${real_command} ${parameters}\n",
}
}
}