Puppet Class: role::flow

Defined in:
puppet/modules/role/manifests/flow.pp

Overview

Class: role::flow

Configures Flow, a MediaWiki discussion system.



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
# File 'puppet/modules/role/manifests/flow.pp', line 3

class role::flow {
    include ::role::memcached
    include ::role::parserfunctions
    include ::role::parsoid
    include ::role::echo

    mediawiki::extension { 'Flow':
        needs_update => true,
        settings     => template('role/flow/conf.php.erb'),
        composer     => true,
        priority     => $::load_last,  # load *after* Echo
    }

    mediawiki::group { 'flow-creator':
      wiki              => $::mediawiki::wiki_name,
      group_name        => 'flow-creator',
      grant_permissions => [
        'flow-create-board',
      ],
    }

    file { '/etc/logrotate.d/mediawiki_Flow':
        source => 'puppet:///modules/role/flow/logrotate.d-mediawiki-Flow',
        owner  => 'root',
        group  => 'root',
        mode   => '0444',
    }

    $db_name = 'flowdb' # same as production
    $db_host = $::mysql::grant_host_name
    $db_user = $::mediawiki::multiwiki::db_user

    mysql::db { $db_name:
        ensure  => present,
        options => 'DEFAULT CHARACTER SET binary',
    }

    mysql::sql { "GRANT ALL PRIVILEGES ON ${db_name}.* TO ${db_user}@${db_host}":
        unless  => "SELECT 1 FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES WHERE TABLE_SCHEMA = '${db_name}' AND GRANTEE = \"'${db_user}'@'${db_host}'\" LIMIT 1",
        require => [
          Mysql::Db[$db_name],
        ],
    }

    mysql::sql { 'Create Flow tables':
        sql     => "USE ${db_name}; SOURCE ${::mediawiki::dir}/extensions/Flow/flow.sql;",
        unless  => "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = '${db_name}' AND table_name = 'flow_revision';",
        require => [
          Mysql::Db[$db_name],
        ],
    }
}