summaryrefslogtreecommitdiff
path: root/manifests/config/file.pp
blob: e04b631d6f48b94a0b73e66110f8a77ccc6c8a72 (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# deploy apache configuration file
# by default we assume it's a global configuration file
define apache::config::file(
    $ensure = present,
    $target = false,
    $type = 'global',
    $source = 'absent',
    $content = 'absent',
    $destination = 'absent'
){
    case $type {
        'include': { $confdir = 'include.d' }
        'global': { $confdir = 'conf.d' }
        default: { fail("Wrong config file type specified for ${name}") }
    }
    $real_destination = $destination ? {
        'absent' => $operatingsystem ? {
            centos => "${apache::centos::config_dir}/${confdir}/${name}",
            gentoo => "${apache::gentoo::config_dir}/${name}",
            debian => "${apache::debian::config_dir}/${confdir}/${name}",
            ubuntu => "${apache::ubuntu::config_dir}/${confdir}/${name}",
            openbsd => "${apache::openbsd::config_dir}/${confdir}/${name}",
            default => "/etc/apache2/${confdir}/${name}",
        },
        default => $destination
    }
    file{"apache_${name}":
        ensure => $ensure,
        path => $real_destination,
        notify => Service[apache],
        owner => root, group => 0, mode => 0644;
    }

    case $ensure {
        'absent','purged': {
            # We want to avoid all stuff related to source and content
        }
        'link': {
            if $target != false {
                File["apache_${name}"] {
                    target => $target,
                }
            }
        }
        default: {
            case $content {
                'absent': {
                    $real_source = $source ? {
                        'absent' => [
                            "puppet://${server}/modules/site-apache/${confdir}/${fqdn}/${name}",
                            "puppet://${server}/modules/site-apache/${confdir}/${apache_cluster_node}/${name}",
                            "puppet://${server}/modules/site-apache/${confdir}/${operatingsystem}.${lsbdistcodename}/${name}",
                            "puppet://${server}/modules/site-apache/${confdir}/${operatingsystem}/${name}",
                            "puppet://${server}/modules/site-apache/${confdir}/${name}",
                            "puppet://${server}/modules/apache/${confdir}/${operatingsystem}.${lsbdistcodename}/${name}",
                            "puppet://${server}/modules/apache/${confdir}/${operatingsystem}/${name}",
                            "puppet://${server}/modules/apache/${confdir}/${name}"
                        ],
                        default => $source,
                    }
                    File["apache_${name}"]{
                        source => $real_source,
                    }
                }
                default: {
                    File["apache_${name}"]{
                        content => $content,
                    }
                }
            }
        }
    }

    case $operatingsystem {
        openbsd: { info("no package dependency on ${operatingsystem} for ${name}") }
        default: {
            File["apache_${name}"]{
                require => Package[apache],
            }
        }
    }
}