Merge branch 'master' into 'master'
Merge with immerda See merge request !1
This commit is contained in:
commit
bf746f2f9c
25 changed files with 106 additions and 527 deletions
|
@ -1 +0,0 @@
|
||||||
this directory contains various data collected for system wide configurations
|
|
|
@ -1,11 +0,0 @@
|
||||||
Puppet::Parser::Functions::newfunction(
|
|
||||||
:array_del,
|
|
||||||
:type => :rvalue,
|
|
||||||
:doc => "Deletes items from an array
|
|
||||||
|
|
||||||
Example: array_del(['a','b'],'b') -> ['a']"
|
|
||||||
) do |args|
|
|
||||||
raise Puppet::ParseError, 'array_del() needs two arguments' if args.length != 2
|
|
||||||
(res=args[0].dup).to_a.delete(args[1])
|
|
||||||
res
|
|
||||||
end
|
|
|
@ -1,11 +0,0 @@
|
||||||
Puppet::Parser::Functions::newfunction(
|
|
||||||
:array_include,
|
|
||||||
:type => :rvalue,
|
|
||||||
:doc => "Checks whether an item is included or not
|
|
||||||
|
|
||||||
Example: array_include(['a','b'],'b') -> true
|
|
||||||
Example: array_include(['a','b'],'c') -> false"
|
|
||||||
) do |args|
|
|
||||||
raise Puppet::ParseError, 'array_include() needs two arguments' if args.length != 2
|
|
||||||
args[0].include?(args[1])
|
|
||||||
end
|
|
15
lib/puppet/parser/functions/get_default.rb
Normal file
15
lib/puppet/parser/functions/get_default.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# get_default($value, $default) : $value
|
||||||
|
#
|
||||||
|
# return $value || $default.
|
||||||
|
module Puppet::Parser::Functions
|
||||||
|
newfunction(:get_default, :type => :rvalue) do |args|
|
||||||
|
value = nil
|
||||||
|
args.each { |x|
|
||||||
|
if ! x.nil? and x.length > 0
|
||||||
|
value = x
|
||||||
|
break
|
||||||
|
end
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,10 +0,0 @@
|
||||||
Puppet::Parser::Functions::newfunction(
|
|
||||||
:join,
|
|
||||||
:type => :rvalue,
|
|
||||||
:doc => "Joins the values of the array in arg1 with the string in arg2
|
|
||||||
|
|
||||||
Example: join(['a','b'],',') -> 'a,b'"
|
|
||||||
) do |args|
|
|
||||||
raise Puppet::ParseError, 'join() needs two arguments' if args.length != 2
|
|
||||||
args[0].to_a.join(args[1])
|
|
||||||
end
|
|
|
@ -1,6 +0,0 @@
|
||||||
module Puppet::Parser::Functions
|
|
||||||
newfunction(:strlength, :type => :rvalue) do |args|
|
|
||||||
args[0].to_s.length
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
|
@ -9,7 +9,8 @@ Puppet::Parser::Functions::newfunction(
|
||||||
unless File.exists?(path)
|
unless File.exists?(path)
|
||||||
dir = File.dirname(path)
|
dir = File.dirname(path)
|
||||||
unless File.directory?(dir)
|
unless File.directory?(dir)
|
||||||
Puppet::Util.recmkdir(dir,0700)
|
require 'fileutils'
|
||||||
|
FileUtils.mkdir_p(dir, :mode => 0700)
|
||||||
end
|
end
|
||||||
require 'fileutils'
|
require 'fileutils'
|
||||||
FileUtils.touch(path)
|
FileUtils.touch(path)
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
Puppet::Parser::Functions::newfunction(
|
|
||||||
:uniq_flatten,
|
|
||||||
:type => :rvalue,
|
|
||||||
:doc => "Flattens an array and make it uniq
|
|
||||||
|
|
||||||
Example: uniq_flatten([['a','b'],'a']) -> ['a','b']"
|
|
||||||
) do |args|
|
|
||||||
raise Puppet::ParseError, 'uniq_flatten() needs one arguments' if args.length != 1
|
|
||||||
args[0].to_a.flatten.collect(&:to_s).uniq
|
|
||||||
end
|
|
|
@ -1,123 +0,0 @@
|
||||||
# common/manifests/defines/concatenated_file.pp -- create a file from snippets
|
|
||||||
# stored in a directory
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# TODO:
|
|
||||||
# * create the directory in _part too
|
|
||||||
|
|
||||||
# This resource collects file snippets from a directory ($dir) and concatenates
|
|
||||||
# them in lexical order of their names into a new file ($name). This can be
|
|
||||||
# used to collect information from disparate sources, when the target file
|
|
||||||
# format doesn't allow includes.
|
|
||||||
#
|
|
||||||
# concatenated_file_part can be used to easily configure content for this.
|
|
||||||
#
|
|
||||||
# If no $dir is specified, the target name with '.d' appended will be used.
|
|
||||||
#
|
|
||||||
# The $dir is purged by puppet and will only contain explicitely configured
|
|
||||||
# files. This can be overridden by defining the directory before the
|
|
||||||
# concatenated_file.
|
|
||||||
#
|
|
||||||
# Depend on File[$name] to change if and only if its contents change. Notify
|
|
||||||
# Exec["concat_${name}"] if you want to force an update.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# concatenated_file { "/etc/some.conf":
|
|
||||||
# dir => "/etc/some.conf.d",
|
|
||||||
# }
|
|
||||||
define concatenated_file (
|
|
||||||
$ensure = 'present',
|
|
||||||
# where the snippets are located
|
|
||||||
$dir = '',
|
|
||||||
# a file with content to prepend
|
|
||||||
$header = '',
|
|
||||||
# a file with content to append
|
|
||||||
$footer = '',
|
|
||||||
# default permissions for the target file
|
|
||||||
$mode = 0644, $owner = root, $group = 0
|
|
||||||
)
|
|
||||||
{
|
|
||||||
include common::moduledir::common::cf
|
|
||||||
|
|
||||||
$dir_real = $dir ? { '' => "${name}.d", default => $dir }
|
|
||||||
|
|
||||||
$tmp_file_name = regsubst($dir_real, '/', '_', 'G')
|
|
||||||
$tmp_file = "${common::moduledir::module_dir_path}/${tmp_file_name}"
|
|
||||||
|
|
||||||
if defined(File[$dir_real]) {
|
|
||||||
debug("${dir_real} already defined")
|
|
||||||
} else {
|
|
||||||
file {
|
|
||||||
$dir_real:
|
|
||||||
ensure => $ensure ? {
|
|
||||||
'present' => directory,
|
|
||||||
default => $ensure
|
|
||||||
},
|
|
||||||
source => "puppet:///modules/common/empty",
|
|
||||||
checksum => mtime,
|
|
||||||
ignore => '.ignore',
|
|
||||||
recurse => true, purge => true, force => true,
|
|
||||||
mode => $mode, owner => $owner, group => $group,
|
|
||||||
notify => Exec["concat_${name}"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
file {
|
|
||||||
$tmp_file:
|
|
||||||
ensure => $ensure, checksum => md5,
|
|
||||||
mode => $mode, owner => $owner, group => $group;
|
|
||||||
# decouple the actual file from the generation process by using a
|
|
||||||
# temporary file and puppet's source mechanism. This ensures that events
|
|
||||||
# for notify/subscribe will only be generated when there is an actual
|
|
||||||
# change.
|
|
||||||
$name:
|
|
||||||
ensure => $ensure, checksum => md5,
|
|
||||||
source => $tmp_file,
|
|
||||||
mode => $mode, owner => $owner, group => $group,
|
|
||||||
require => File[$tmp_file];
|
|
||||||
}
|
|
||||||
|
|
||||||
if $ensure == 'present' {
|
|
||||||
# if there is a header or footer file, add it
|
|
||||||
$additional_cmd = $header ? {
|
|
||||||
'' => $footer ? {
|
|
||||||
'' => '',
|
|
||||||
default => "| cat - '${footer}' "
|
|
||||||
},
|
|
||||||
default => $footer ? {
|
|
||||||
'' => "| cat '${header}' - ",
|
|
||||||
default => "| cat '${header}' - '${footer}' "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# use >| to force clobbering the target file
|
|
||||||
exec { "concat_${name}":
|
|
||||||
command => "/usr/bin/find ${dir_real} -maxdepth 1 -type f ! -name '*puppettmp' -print0 | sort -z | xargs -0 cat ${additional_cmd} >| ${tmp_file}",
|
|
||||||
subscribe => [ File[$dir_real] ],
|
|
||||||
before => File[$tmp_file],
|
|
||||||
alias => [ "concat_${dir_real}"],
|
|
||||||
loglevel => info
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Add a snippet called $name to the concatenated_file at $dir.
|
|
||||||
# The file can be referenced as File["cf_part_${name}"]
|
|
||||||
define concatenated_file_part (
|
|
||||||
$dir, $content = '', $ensure = present,
|
|
||||||
$mode = 0644, $owner = root, $group = 0
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
file { "${dir}/${name}":
|
|
||||||
ensure => $ensure, content => $content,
|
|
||||||
mode => $mode, owner => $owner, group => $group,
|
|
||||||
alias => "cf_part_${name}",
|
|
||||||
notify => Exec["concat_${dir}"],
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
# common/manifests/defines/config_file.pp -- create a config file with default permissions
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# A simple wrapper to give all configuration files common defaults.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# config_file { filename:
|
|
||||||
# content => "....\n",
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
# Examples:
|
|
||||||
#
|
|
||||||
# To create the file /etc/vservers/${vs_name}/context with specific
|
|
||||||
# content:
|
|
||||||
#
|
|
||||||
# config_file { "/etc/vservers/${vs_name}/context":
|
|
||||||
# content => "${context}\n",
|
|
||||||
# notify => Exec["vs_restart_${vs_name}"],
|
|
||||||
# require => Exec["vs_create_${vs_name}"];
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
# To create the file /etc/apache2/sites-available/munin-stats with the
|
|
||||||
# content pulled from a template:
|
|
||||||
#
|
|
||||||
# config_file { "/etc/apache2/sites-available/munin-stats":
|
|
||||||
# content => template("apache/munin-stats"),
|
|
||||||
# require => Package["apache2"],
|
|
||||||
# notify => Exec["reload-apache2"]
|
|
||||||
# }
|
|
||||||
|
|
||||||
define config_file ($content = '', $source = '', $ensure = 'present') {
|
|
||||||
file { $name:
|
|
||||||
ensure => $ensure,
|
|
||||||
# keep old versions on the server
|
|
||||||
backup => puppet,
|
|
||||||
# default permissions for config files
|
|
||||||
mode => 0644, owner => root, group => 0,
|
|
||||||
# really detect changes to this file
|
|
||||||
checksum => md5,
|
|
||||||
}
|
|
||||||
|
|
||||||
case $source {
|
|
||||||
'': { }
|
|
||||||
default: { File[$name] { source => $source } }
|
|
||||||
}
|
|
||||||
|
|
||||||
case $content {
|
|
||||||
'': { }
|
|
||||||
default: { File[$name] { content => $content } }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
# common/manifests/defines/line.pp -- a trivial mechanism to ensure a line exists in a file
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# Ensures that a specific line is present or absent in a file. This can
|
|
||||||
# be very brittle, since even small changes can throw this off.
|
|
||||||
#
|
|
||||||
# If the line is not present yet, it will be appended to the file.
|
|
||||||
#
|
|
||||||
# The name of the define is not used. Just keep it (globally) unique and
|
|
||||||
# descriptive.
|
|
||||||
#
|
|
||||||
# Use this only for very trivial stuff. Usually replacing the whole file
|
|
||||||
# is a more stable solution with less maintenance headaches afterwards.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# line { description:
|
|
||||||
# file => "filename",
|
|
||||||
# line => "content",
|
|
||||||
# ensure => {absent,*present*}
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# The following ensures that the line "allow ^$munin_host$" exists in
|
|
||||||
# /etc/munin/munin-node.conf, and if there are any changes notify the
|
|
||||||
# service for a restart
|
|
||||||
#
|
|
||||||
# line {
|
|
||||||
# allow_munin_host:
|
|
||||||
# file => "/etc/munin/munin-node.conf",
|
|
||||||
# line => "allow ^$munin_host$",
|
|
||||||
# ensure => present,
|
|
||||||
# notify => Service[munin-node],
|
|
||||||
# require => Package[munin-node];
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
# Code with fixes gathered at
|
|
||||||
# http://reductivelabs.com/trac/puppet/wiki/Recipes/SimpleText
|
|
||||||
define line($file, $line, $ensure = 'present') {
|
|
||||||
case $ensure {
|
|
||||||
default : { err ( "unknown ensure value '${ensure}'" ) }
|
|
||||||
present: {
|
|
||||||
exec { "echo '${line}' >> '${file}'":
|
|
||||||
unless => "grep -qFx '${line}' '${file}'"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
absent: {
|
|
||||||
$subst_line = regsubst($line,'(/|\.)','\\\1','G')
|
|
||||||
exec { "sed -i '/${subst_line}/d' '${file}'":
|
|
||||||
onlyif => "grep -qFx '${line}' '${file}'"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
# common/manifests/defines/link.pp -- create a link
|
|
||||||
#
|
|
||||||
# Copyleft (C) 2009 immerdaadmin <admin@immerda.ch>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# Usage:
|
|
||||||
# link { "/usr/bin/convert": target => "/usr/local/bin/convert" }
|
|
||||||
# e.g. equivalent to bash# ln -s /usr/bin/convert /usr/local/bin/convert
|
|
||||||
|
|
||||||
define link($target = absent) {
|
|
||||||
file{$name: ensure => $target; }
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
# common/manifests/defines/modules_dir.pp -- create a default directory
|
|
||||||
# for storing module specific information
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# A module_dir is a storage place for all the stuff a module might want to
|
|
||||||
# store. According to the FHS, this should go to /var/lib. Since this is a part
|
|
||||||
# of puppet, the full path is /var/lib/puppet/modules/${name}. Every module
|
|
||||||
# should # prefix its module_dirs with its name.
|
|
||||||
#
|
|
||||||
# By default, the module_dir is loaded from "puppet:///${name}/module_dir". If
|
|
||||||
# that doesn't exist an empty directory is taken as source. The directory is
|
|
||||||
# purged so that modules do not have to worry about removing cruft.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# include common::moduledir
|
|
||||||
# module_dir { ["common", "common/dir1", "common/dir2" ]: }
|
|
||||||
#
|
|
||||||
# You may refer to a file in module_dir by using :
|
|
||||||
# file { "${common::moduledir::module_dir_path}/somedir/somefile": }
|
|
||||||
|
|
||||||
define module_dir (
|
|
||||||
$mode = 0644, $owner = root, $group = 0
|
|
||||||
)
|
|
||||||
{
|
|
||||||
include common::moduledir
|
|
||||||
$dir = "${common::moduledir::module_dir_path}/${name}"
|
|
||||||
if defined(File[$dir]) {
|
|
||||||
debug("${dir} already defined")
|
|
||||||
} else {
|
|
||||||
file {
|
|
||||||
$dir:
|
|
||||||
source => [ "puppet:///modules/${name}/modules_dir", "puppet:///modules/common/empty"],
|
|
||||||
checksum => mtime,
|
|
||||||
# ignore the placeholder
|
|
||||||
ignore => '.ignore',
|
|
||||||
recurse => true, purge => true, force => true,
|
|
||||||
mode => $mode, owner => $owner, group => $group;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# alias for compatibility
|
|
||||||
define modules_dir (
|
|
||||||
$mode = 0644, $owner = root, $group = 0
|
|
||||||
)
|
|
||||||
{
|
|
||||||
module_dir { $name: mode => $mode, owner => $owner, group => $group }
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
# common/manifests/defines/modules_file.pp -- use a modules_dir to store module
|
|
||||||
# specific files
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# Put a file into module-local storage.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# modules_file { "module/file":
|
|
||||||
# source => "puppet:///...",
|
|
||||||
# mode => 644, # default
|
|
||||||
# owner => root, # default
|
|
||||||
# group => 0, # default
|
|
||||||
# }
|
|
||||||
define module_file (
|
|
||||||
$source,
|
|
||||||
$ensure = present,
|
|
||||||
$m_alias = undef,
|
|
||||||
$mode = 0644, $owner = root, $group = 0
|
|
||||||
)
|
|
||||||
{
|
|
||||||
include common::moduledir
|
|
||||||
file {
|
|
||||||
"${common::moduledir::module_dir_path}/${name}":
|
|
||||||
source => $source,
|
|
||||||
ensure => $ensure,
|
|
||||||
alias => $m_alias,
|
|
||||||
mode => $mode, owner => $owner, group => $group;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# alias for compatibility
|
|
||||||
define modules_file (
|
|
||||||
$source,
|
|
||||||
$ensure = present,
|
|
||||||
$m_alias = undef,
|
|
||||||
$mode = 0644, $owner = root, $group = 0
|
|
||||||
)
|
|
||||||
{
|
|
||||||
module_file { $name:
|
|
||||||
source => $source,
|
|
||||||
ensure => $ensure,
|
|
||||||
alias => $m_alias,
|
|
||||||
mode => $mode, owner => $owner, group => $group
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
# common/manifests/defines/replace.pp -- replace a pattern in a file with a string
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
# A hack to replace all occurrences of a regular expression in a file with a
|
|
||||||
# specified string. Sometimes it can be less effort to replace only a single
|
|
||||||
# value in a huge config file instead of creating a template out of it. Still,
|
|
||||||
# creating a template is often better than this hack.
|
|
||||||
#
|
|
||||||
# This define uses perl regular expressions.
|
|
||||||
#
|
|
||||||
# Use this only for very trivial stuff. Usually replacing the whole file is a
|
|
||||||
# more stable solution with less maintenance headaches afterwards.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
#
|
|
||||||
# replace { description:
|
|
||||||
# file => "filename",
|
|
||||||
# pattern => "regexp",
|
|
||||||
# replacement => "replacement"
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# To replace the current port in /etc/munin/munin-node.conf
|
|
||||||
# with a new port, but only disturbing the file when needed:
|
|
||||||
#
|
|
||||||
# replace { set_munin_node_port:
|
|
||||||
# file => "/etc/munin/munin-node.conf",
|
|
||||||
# pattern => "^port (?!$port)[0-9]*",
|
|
||||||
# replacement => "port $port"
|
|
||||||
# }
|
|
||||||
|
|
||||||
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}/ && ! /\\Q${replacement_no_slashes}\\E/; END { exit \$ret; }' '${file}'",
|
|
||||||
alias => "exec_$name",
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
# common/manifests/init.pp - Define common infrastructure for modules
|
|
||||||
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
|
||||||
# See LICENSE for the full license granted to you.
|
|
||||||
|
|
||||||
import "defines/*.pp"
|
|
||||||
|
|
34
manifests/module_dir.pp
Normal file
34
manifests/module_dir.pp
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# common/manifests/modules_dir.pp -- create a default directory
|
||||||
|
# for storing module specific information
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
||||||
|
# See LICENSE for the full license granted to you.
|
||||||
|
|
||||||
|
# A module_dir is a storage place for all the stuff a module might want to
|
||||||
|
# store. According to the FHS, this should go to /var/lib. Since this is a part
|
||||||
|
# of puppet, the full path is /var/lib/puppet/modules/${name}. Every module
|
||||||
|
# should # prefix its module_dirs with its name.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# include common::moduledir
|
||||||
|
# module_dir { ["common", "common/dir1", "common/dir2" ]: }
|
||||||
|
#
|
||||||
|
# You may refer to a file in module_dir by using :
|
||||||
|
# file { "${common::moduledir::module_dir_path}/somedir/somefile": }
|
||||||
|
define common::module_dir(
|
||||||
|
$owner = root,
|
||||||
|
$group = 0,
|
||||||
|
$mode = 0644
|
||||||
|
) {
|
||||||
|
include common::moduledir
|
||||||
|
file {
|
||||||
|
"${common::moduledir::module_dir_path}/${name}":
|
||||||
|
ensure => directory,
|
||||||
|
recurse => true,
|
||||||
|
purge => true,
|
||||||
|
force => true,
|
||||||
|
owner => $owner,
|
||||||
|
group => $group,
|
||||||
|
mode => $mode;
|
||||||
|
}
|
||||||
|
}
|
37
manifests/module_file.pp
Normal file
37
manifests/module_file.pp
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# common/manifests/module_file.pp -- use a modules_dir to store module
|
||||||
|
# specific files
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
|
||||||
|
# See LICENSE for the full license granted to you.
|
||||||
|
|
||||||
|
# Put a file into module-local storage.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# common::module_file { "module/file":
|
||||||
|
# source => "puppet:///...",
|
||||||
|
# mode => 644, # default
|
||||||
|
# owner => root, # default
|
||||||
|
# group => 0, # default
|
||||||
|
# }
|
||||||
|
define common::module_file (
|
||||||
|
$ensure = present,
|
||||||
|
$source = undef,
|
||||||
|
$owner = root,
|
||||||
|
$group = 0,
|
||||||
|
$mode = 0644
|
||||||
|
){
|
||||||
|
include common::moduledir
|
||||||
|
file {
|
||||||
|
"${common::moduledir::module_dir_path}/${name}":
|
||||||
|
ensure => $ensure,
|
||||||
|
}
|
||||||
|
|
||||||
|
if $ensure != 'absent' {
|
||||||
|
File["${common::moduledir::module_dir_path}/${name}"]{
|
||||||
|
source => $source,
|
||||||
|
owner => $owner,
|
||||||
|
group => $group,
|
||||||
|
mode => $mode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,15 +1,18 @@
|
||||||
|
# setup root for module_dirs
|
||||||
class common::moduledir {
|
class common::moduledir {
|
||||||
# Use this variable to reference the base path. Thus you are safe from any
|
# Use this variable to reference the base path. Thus you are safe from any
|
||||||
# changes.
|
# changes.
|
||||||
$module_dir_path = '/var/lib/puppet/modules'
|
$module_dir_path = '/var/lib/puppet/modules'
|
||||||
|
|
||||||
# Module programmers can use /var/lib/puppet/modules/$modulename to save
|
# Module programmers can use /var/lib/puppet/modules/$modulename to save
|
||||||
# module-local data, e.g. for constructing config files
|
# module-local data, e.g. for constructing config files
|
||||||
file{$module_dir_path:
|
file{$module_dir_path:
|
||||||
ensure => directory,
|
ensure => directory,
|
||||||
source => "puppet:///modules/common/modules/",
|
recurse => true,
|
||||||
ignore => '.ignore',
|
purge => true,
|
||||||
recurse => true, purge => true, force => true,
|
force => true,
|
||||||
mode => 0755, owner => root, group => 0;
|
owner => root,
|
||||||
}
|
group => 0,
|
||||||
|
mode => '0755';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# setup a common dir
|
||||||
class common::moduledir::common{
|
class common::moduledir::common{
|
||||||
module_dir{'common': }
|
common::module_dir{'common': }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
class common::moduledir::common::cf {
|
|
||||||
include ::common::moduledir::common
|
|
||||||
module_dir{'common/cf': }
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
#! /usr/bin/env ruby
|
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
||||||
|
|
||||||
describe "the array_del function" do
|
|
||||||
|
|
||||||
before :each do
|
|
||||||
@scope = Puppet::Parser::Scope.new
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should exist" do
|
|
||||||
Puppet::Parser::Functions.function("array_del").should == "function_array_del"
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should raise a ParseError if there is less than 2 arguments" do
|
|
||||||
lambda { @scope.function_array_del(["foo"]) }.should( raise_error(Puppet::ParseError))
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should raise a ParseError if there is more than 2 arguments" do
|
|
||||||
lambda { @scope.function_array_del(["foo", "bar", "gazonk"]) }.should( raise_error(Puppet::ParseError))
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should remove an item if it's present" do
|
|
||||||
result = @scope.function_array_del(['a','b'],'b')
|
|
||||||
result.should(eql(['a']))
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should do nothing if an item is not present" do
|
|
||||||
result = @scope.function_array_del(['a','b'],'c')
|
|
||||||
result.should(eql(['a','b']))
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should leave the argument untouched" do
|
|
||||||
a = ['a','b']
|
|
||||||
result = @scope.function_array_del(a,'b')
|
|
||||||
a.should(eql(['a','b']))
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,33 +0,0 @@
|
||||||
#! /usr/bin/env ruby
|
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
||||||
|
|
||||||
describe "the array_include function" do
|
|
||||||
|
|
||||||
before :each do
|
|
||||||
@scope = Puppet::Parser::Scope.new
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should exist" do
|
|
||||||
Puppet::Parser::Functions.function("array_include").should == "function_array_include"
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should raise a ParseError if there is less than 2 arguments" do
|
|
||||||
lambda { @scope.function_array_include(["foo"]) }.should( raise_error(Puppet::ParseError))
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should raise a ParseError if there is more than 2 arguments" do
|
|
||||||
lambda { @scope.function_array_include(["foo", "bar", "gazonk"]) }.should( raise_error(Puppet::ParseError))
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should return true if an item is present in the array" do
|
|
||||||
result = @scope.function_array_include(['a','b'],'b')
|
|
||||||
result.should == true
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should return false if an item is not present" do
|
|
||||||
result = @scope.function_array_include(['a','b'],'c')
|
|
||||||
result.should == false
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -44,7 +44,7 @@ describe "the tfile function" do
|
||||||
it "should create the path if it does not exist" do
|
it "should create the path if it does not exist" do
|
||||||
File.stubs(:exists?).with('/some_path/aa').returns(false)
|
File.stubs(:exists?).with('/some_path/aa').returns(false)
|
||||||
File.stubs(:directory?).with('/some_path').returns(false)
|
File.stubs(:directory?).with('/some_path').returns(false)
|
||||||
Puppet::Util.expects(:recmkdir).with("/some_path",0700)
|
FileUtils.expects(:mkdir_p).with("/some_path",:mode => 0700)
|
||||||
FileUtils.expects(:touch).with('/some_path/aa')
|
FileUtils.expects(:touch).with('/some_path/aa')
|
||||||
result = @scope.function_tfile(['/some_path/aa'])
|
result = @scope.function_tfile(['/some_path/aa'])
|
||||||
result.should == "foo1\nfoo2\n"
|
result.should == "foo1\nfoo2\n"
|
||||||
|
|
Loading…
Reference in a new issue