From 9d7a47506c6d824d254774f2c7828e8cb65e236f Mon Sep 17 00:00:00 2001 From: root Date: Tue, 13 Nov 2007 10:44:07 +0100 Subject: common: minor improvements to config_file, replace and line --- manifests/defines/config_file.pp | 14 ++++++++++++-- manifests/defines/line.pp | 4 ++-- manifests/defines/replace.pp | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) (limited to 'manifests') diff --git a/manifests/defines/config_file.pp b/manifests/defines/config_file.pp index 6188ac4..c57c9a3 100644 --- a/manifests/defines/config_file.pp +++ b/manifests/defines/config_file.pp @@ -27,10 +27,9 @@ # notify => Exec["reload-apache2"] # } -define config_file ($content, $ensure = 'present') { +define config_file ($content = '', $source = '', $ensure = 'present') { file { $name: ensure => $ensure, - content => $content, # keep old versions on the server backup => server, # default permissions for config files @@ -38,6 +37,17 @@ define config_file ($content, $ensure = 'present') { # really detect changes to this file checksum => md5, } + + case $content { + '': { + case $source { + '': { } + default: { File[$name] { source => $source } } + } + } + default: { File[$name] { content => $content } } + } + } diff --git a/manifests/defines/line.pp b/manifests/defines/line.pp index 4cf8fba..3f7c4c0 100644 --- a/manifests/defines/line.pp +++ b/manifests/defines/line.pp @@ -28,12 +28,12 @@ define line($file, $line, $ensure = 'present') { default : { err ( "unknown ensure value '${ensure}'" ) } present: { exec { "/bin/echo '${line}' >> '${file}'": - unless => "/bin/grep -Fx '${line}' '${file}'" + unless => "/bin/grep -qFx '${line}' '${file}'" } } absent: { exec { "/usr/bin/perl -ni -e 'print unless /^\\Q${line}\\E\$/' '${file}'": - onlyif => "/bin/grep -Fx '${line}' '${file}'" + onlyif => "/bin/grep -qFx '${line}' '${file}'" } } } diff --git a/manifests/defines/replace.pp b/manifests/defines/replace.pp index d1c7496..c13325e 100644 --- a/manifests/defines/replace.pp +++ b/manifests/defines/replace.pp @@ -23,8 +23,8 @@ define replace($file, $pattern, $replacement) { $pattern_no_slashes = slash_escape($pattern) $replacement_no_slashes = slash_escape($replacement) exec { "replace_${pattern}_${file}": - command => "/usr/bin/perl -pi -e 's/$pattern_no_slashes/$replacement_no_slashes/' '$file'", - onlyif => "/usr/bin/perl -ne 'BEGIN { \$ret = 1; } \$ret = 0 if /$pattern_no_slashes/; END { exit \$ret; }' '$file'", + command => "/usr/bin/perl -pi -e 's/${pattern_no_slashes}/${replacement_no_slashes}/' '${file}'", + onlyif => "/usr/bin/perl -ne 'BEGIN { \$ret = 1; } \$ret = 0 if /${pattern_no_slashes}/ && ! /\\Q${replacement_no_slashes}\\E/; END { exit \$ret; }' '${file}'", alias => "exec_$name", } } -- cgit v1.2.3