aboutsummaryrefslogtreecommitdiffstats
path: root/modules/sympa/manifests/server.pp
blob: 7eca4dcaa931dce931355142e4f6f69e28049c5f (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
class sympa::server(
    $authentication_info_url = 'https://wiki.mageia.org/en/Mageia.org_user_account'
    ) {
    include sympa::variable
    # perl-CGI-Fast is needed for fast cgi
    # perl-Socket6 is required by perl-IO-Socket-SSL
    #  (optional requirement)
    package {['sympa',
              'sympa-www',
              'perl-CGI-Fast',
              'perl-Socket6']: }

    # sympa script start 5 differents script, I am not
    # sure that puppet will correctly handle this
    service { 'sympa':
        subscribe => [ Package['sympa'], File['/etc/sympa/sympa.conf']]
    }

    $pgsql_password = extlookup('sympa_pgsql','x')
    $ldap_password = extlookup('sympa_ldap','x')

    postgresql::remote_db_and_user { 'sympa':
        password    => $pgsql_password,
        description => 'Sympa database',
    }

    File {
        require => Package['sympa'],
    }

    $vhost = $sympa::variable::vhost
    file { '/etc/sympa/sympa.conf':
    # should be cleaner to have it root owned, but puppet do not support acl
    # and in any case, config will be reset if it change
        owner   => 'sympa',
        group   => 'apache',
        mode    => '0640',
        content => template('sympa/sympa.conf'),
    }

    file { '/etc/sympa/auth.conf':
        content => template('sympa/auth.conf'),
        notify  => Service['httpd'],
    }


    include apache::mod::fcgid
    apache::webapp_other { 'sympa':
        webapp_file => 'sympa/webapp_sympa.conf',
    }

    apache::vhost::redirect_ssl { $sympa::variable::vhost: }

    apache::vhost::base { $sympa::variable::vhost:
        use_ssl => true,
        content => template('sympa/vhost_ml.conf'),
    }

    git::snapshot { '/etc/sympa/web_tt2':
        source => "git://git.${::domain}/web/templates/sympa",
    }

    file { ['/etc/sympa/lists_xml/',
            '/etc/sympa/scenari/',
            '/etc/sympa/data_sources/',
            '/etc/sympa/search_filters/']:
        ensure  => directory,
        purge   => true,
        recurse => true,
        force   => true,
    }

    file {
        '/etc/sympa/scenari/subscribe.open_web_only_notify':
            source => 'puppet:///modules/sympa/scenari/open_web_only_notify';
        '/etc/sympa/scenari/unsubscribe.open_web_only_notify':
            source => 'puppet:///modules/sympa/scenari/open_web_only_notify';
        '/etc/sympa/scenari/create_list.forbidden':
            source => 'puppet:///modules/sympa/scenari/forbidden';
        '/etc/sympa/topics.conf':
            source => 'puppet:///modules/sympa/topics.conf';
    }

    # add each group that could be used in a sympa ml either as
    # - owner
    # - editor ( moderation )
    sympa::datasource::ldap_group { 'mga-sysadmin': }
    sympa::datasource::ldap_group { 'mga-ml_moderators': }


    # directory that will hold the list data
    # i am not sure of the name ( misc, 09/12/10 )
    file { '/var/lib/sympa/expl/':
        ensure => directory,
        owner  => 'sympa',
    }
}