diff options
Diffstat (limited to 'manifests')
-rw-r--r-- | manifests/fragment.pp | 9 | ||||
-rw-r--r-- | manifests/init.pp | 185 | ||||
-rw-r--r-- | manifests/setup.pp | 9 |
3 files changed, 142 insertions, 61 deletions
diff --git a/manifests/fragment.pp b/manifests/fragment.pp index 943bf67..cf55f8b 100644 --- a/manifests/fragment.pp +++ b/manifests/fragment.pp @@ -1,5 +1,5 @@ # Puts a file fragment into a directory previous setup using concat -# +# # OPTIONS: # - target The file that these fragments belong to # - content If present puts the content into the file @@ -14,8 +14,8 @@ # - backup Controls the filebucketing behavior of the final file and # see File type reference for its use. Defaults to 'puppet' define concat::fragment($target, $content='', $source='', $order=10, $ensure = 'present', $mode = '0644', $owner = $::id, $group = $concat::setup::root_group, $backup = 'puppet') { - $safe_name = regsubst($name, '/', '_', 'G') - $safe_target_name = regsubst($target, '/', '_', 'G') + $safe_name = regsubst($name, '[/\n]', '_', 'GM') + $safe_target_name = regsubst($target, '[/\n]', '_', 'GM') $concatdir = $concat::setup::concatdir $fragdir = "${concatdir}/${safe_target_name}" @@ -29,6 +29,9 @@ define concat::fragment($target, $content='', $source='', $order=10, $ensure = ' '', 'absent', 'present', 'file', 'directory': { crit('No content, source or symlink specified') } + default: { + #do nothing, make puppet-lint happy. + } } } default: { File{ source => $source } } diff --git a/manifests/init.pp b/manifests/init.pp index 0b3ed56..b309059 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -30,6 +30,30 @@ # will have an number prefix of 10, you can use the order option # to control that and thus control the order the final file gets built in. # +# You can also specify a path and use a different name for your resources: +# +# # You can make this something dynamic, based on whatever parameters your +# # module/class for example. +# $vhost_file = '/etc/httpd/vhosts/01-my-vhost.conf' +# +# concat{'apache-vhost-myvhost': +# path => $vhost_file, +# } +# +# # We don't care where the file is located, just what to put in it. +# concat::fragment {'apache-vhost-myvhost-main': +# target => 'apache-vhost-myvhost', +# content => '<virtualhost *:80>', +# order => 01, +# } +# +# concat::fragment {'apache-vhost-myvhost-close': +# target => 'apache-vhost-myvhost', +# content => '</virtualhost>', +# order => 99, +# } +# +# # SETUP: # The class concat::setup uses the fact concat_basedir to define the variable # $concatdir, where all the temporary files and fragments will be @@ -43,9 +67,6 @@ # There's some regular expression magic to figure out the puppet version but # if you're on an older 0.24 version just set $puppetversion = 24 # -# Before you can use any of the concat features you should include the -# class concat::setup somewhere on your node first. -# # DETAIL: # We use a helper shell script called concatfragments.sh that gets placed # in <Puppet[:vardir]>/concat/bin to do the concatenation. While this might @@ -69,6 +90,10 @@ # Sets up so that you can use fragments to build a final config file, # # OPTIONS: +# - path The path to the final file. Use this in case you want to +# differentiate between the name of a resource and the file path. +# Note: Use the name you provided in the target of your +# fragments. # - mode The mode of the final file # - owner Who will own the file # - group Who will own the file @@ -77,21 +102,41 @@ # that it is built by puppet # - backup Controls the filebucketing behavior of the final file and # see File type reference for its use. Defaults to 'puppet' +# - replace Whether to replace a file that already exists on the local +# system # # ACTIONS: # - Creates fragment directories if it didn't exist already -# - Executes the concatfragments.sh script to build the final file, this script will create -# directory/fragments.concat. Execution happens only when: +# - Executes the concatfragments.sh script to build the final file, this +# script will create directory/fragments.concat. Execution happens only +# when: # * The directory changes -# * fragments.concat != final destination, this means rebuilds will happen whenever -# someone changes or deletes the final file. Checking is done using /usr/bin/cmp. -# * The Exec gets notified by something else - like the concat::fragment define +# * fragments.concat != final destination, this means rebuilds will happen +# whenever someone changes or deletes the final file. Checking is done +# using /usr/bin/cmp. +# * The Exec gets notified by something else - like the concat::fragment +# define # - Copies the file over to the final destination using a file resource # # ALIASES: -# - The exec can notified using Exec["concat_/path/to/file"] or Exec["concat_/path/to/directory"] -# - The final file can be referened as File["/path/to/file"] or File["concat_/path/to/file"] -define concat($mode = '0644', $owner = $::id, $group = $concat::setup::root_group, $warn = false, $force = false, $backup = 'puppet', $gnu = undef, $order='alpha') { +# - The exec can notified using Exec["concat_/path/to/file"] or +# Exec["concat_/path/to/directory"] +# - The final file can be referened as File["/path/to/file"] or +# File["concat_/path/to/file"] +define concat( + $path = $name, + $owner = $::id, + $group = $concat::setup::root_group, + $mode = '0644', + $warn = false, + $force = false, + $backup = 'puppet', + $replace = true, + $gnu = undef, + $order='alpha' +) { + include concat::setup + $safe_name = regsubst($name, '/', '_', 'G') $concatdir = $concat::setup::concatdir $version = $concat::setup::majorversion @@ -100,9 +145,15 @@ define concat($mode = '0644', $owner = $::id, $group = $concat::setup::root_grou $default_warn_message = '# This file is managed by Puppet. DO NOT EDIT.' case $warn { - 'true',true,yes,on: { $warnmsg = $default_warn_message } - 'false',false,no,off: { $warnmsg = '' } - default: { $warnmsg = $warn } + 'true', true, yes, on: { + $warnmsg = $default_warn_message + } + 'false', false, no, off: { + $warnmsg = '' + } + default: { + $warnmsg = $warn + } } $warnmsg_escaped = regsubst($warnmsg, "'", "'\\\\''", 'G') @@ -112,67 +163,93 @@ define concat($mode = '0644', $owner = $::id, $group = $concat::setup::root_grou } case $force { - 'true',true,yes,on: { $forceflag = '-f' } - 'false',false,no,off: { $forceflag = '' } - default: { fail("Improper 'force' value given to concat: ${force}") } + 'true', true, yes, on: { + $forceflag = '-f' + } + 'false', false, no, off: { + $forceflag = '' + } + default: { + fail("Improper 'force' value given to concat: ${force}") + } } case $order { - numeric: { $orderflag = '-n' } - alpha: { $orderflag = '' } - default: { fail("Improper 'order' value given to concat: ${order}") } + numeric: { + $orderflag = '-n' + } + alpha: { + $orderflag = '' + } + default: { + fail("Improper 'order' value given to concat: ${order}") + } } - File{ - owner => $::id, - group => $group, - mode => $mode, - backup => $backup + File { + owner => $::id, + group => $group, + mode => $mode, + backup => $backup, + replace => $replace } - file{$fragdir: - ensure => directory; + file { $fragdir: + ensure => directory, + } - "${fragdir}/fragments": + $source_real = $version ? { + 24 => 'puppet:///concat/null', + default => undef, + } + + file { "${fragdir}/fragments": ensure => directory, - recurse => true, - purge => true, force => true, ignore => ['.svn', '.git', '.gitignore'], - source => $version ? { - 24 => 'puppet:///concat/null', - default => undef, - }, - notify => Exec["concat_${name}"]; + notify => Exec["concat_${name}"], + purge => true, + recurse => true, + source => $source_real, + } - "${fragdir}/fragments.concat": - ensure => present; + file { "${fragdir}/fragments.concat": + ensure => present, + } - "${fragdir}/${concat_name}": - ensure => present; + file { "${fragdir}/${concat_name}": + ensure => present, + } - $name: + file { $name: ensure => present, - source => "${fragdir}/${concat_name}", - owner => $owner, + path => $path, + alias => "concat_${name}", group => $group, - checksum => md5, mode => $mode, - alias => "concat_${name}"; + owner => $owner, + source => "${fragdir}/${concat_name}", } - exec{"concat_${name}": - notify => File[$name], - subscribe => File[$fragdir], - alias => "concat_${fragdir}", - require => [ File[$fragdir], File["${fragdir}/fragments"], File["${fragdir}/fragments.concat"] ], - unless => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag}", - command => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag}", + exec { "concat_${name}": + alias => "concat_${fragdir}", + command => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} ${warnflag} ${forceflag} ${orderflag}", + notify => File[$name], + require => [ + File[$fragdir], + File["${fragdir}/fragments"], + File["${fragdir}/fragments.concat"], + ], + subscribe => File[$fragdir], + unless => "${concat::setup::concatdir}/bin/concatfragments.sh -o ${fragdir}/${concat_name} -d ${fragdir} -t ${warnflag} ${forceflag} ${orderflag}", } + if $::id == 'root' { - Exec["concat_${name}"]{ - user => root, - group => $group, + Exec["concat_${name}"] { + user => root, + group => $group, } } } + +# vim:sw=2:ts=2:expandtab:textwidth=79 diff --git a/manifests/setup.pp b/manifests/setup.pp index 38aeb96..fc6cb93 100644 --- a/manifests/setup.pp +++ b/manifests/setup.pp @@ -26,15 +26,16 @@ class concat::setup { } $majorversion = regsubst($::puppetversion, '^[0-9]+[.]([0-9]+)[.][0-9]+$', '\1') + $fragments_source = $majorversion ? { + 24 => 'puppet:///concat/concatfragments.sh', + default => 'puppet:///modules/concat/concatfragments.sh' + } file{"${concatdir}/bin/concatfragments.sh": owner => $id, group => $root_group, mode => '0755', - source => $majorversion ? { - 24 => 'puppet:///concat/concatfragments.sh', - default => 'puppet:///modules/concat/concatfragments.sh' - }; + source => $fragments_source; [ $concatdir, "${concatdir}/bin" ]: ensure => directory, |