summaryrefslogtreecommitdiff
path: root/manifests/fragment.pp
blob: 1fb412894079e92df3a39dd0fae42920c0c7cc8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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
#   - source    If content was not specified, use the source
#   - order     By default all files gets a 10_ prefix in the directory
#               you can set it to anything else using this to influence the
#               order of the content in the file
#   - ensure    Present/Absent or destination to a file to include another file
#   - mode      Mode for the file
#   - owner     Owner of the file
#   - group     Owner of the file
#   - 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')
    $concatdir = $concat::setup::concatdir
    $fragdir = "${concatdir}/${safe_target_name}"

    # if content is passed, use that, else if source is passed use that
    # if neither passed, but $ensure is in symlink form, make a symlink
    case $content {
        "": {
                case $source {
                        "": {
                                case $ensure {
                                    "", "absent", "present", "file", "directory": {
                                        crit("No content, source or symlink specified")
                                    }
                                }
                            }
                   default: { File{ source => $source } }
                }
            }
        default: { File{ content => $content } }
    }

    file{"${fragdir}/fragments/${order}_${safe_name}":
        mode   => $mode,
        owner  => $owner,
        group  => $group,
        ensure => $ensure,
        backup => $backup,
        alias  => "concat_fragment_${name}",
        notify => Exec["concat_${target}"]
    }
}

# vi:tabstop=4:expandtab:ai