summaryrefslogtreecommitdiff
path: root/manifests/init.pp
blob: e9878eb5ecebea6f183f9c0d2b85a37bd58b7a37 (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
class websites inherits websites::setup {
  # Include the needed classes for website hosting
  include php
  include trac
  include websvn
  include rsync::rrsync

  # Declare the needed classes for website hosting
  class { [ 'drupal', 'ikiwiki', 'pmwiki', 'hotglue', 'wordpress' ]: }
  class {
    'viewvc':
      root_parents => "/var/svn : svn";
  }

  $git_daemon = hiera('nodo::web::git_daemon', True)

  if $git_daemon != false {
    class { 'git::gitweb': }
    class { 'git::cgit': }

    apache::site { "git":
      source         => true,
      docroot        => '/var/git/repositories',
      mpm            => false,
      tag            => 'all',
    }
  }

  apache::site { "images":
    docroot => "${apache::www_folder}/images",
    mpm     => false,
    tag     => 'all',
  }

  # Retrieve configured instances
  $sites     = hiera('apache::sites',           {})
  $databases = hiera('database::instances',     {})
  $ikiwikis  = hiera('ikiwiki::instances',      {})
  $domains   = hiera('domain_check::instances', {})

  # Apply instances
  create_resources('apache::site',           $sites)
  create_resources('database::instance',     $databases)
  create_resources('ikiwiki::instance',      $ikiwikis)
  create_resources('domain_check::instance', $domains)

  # Remove untagged site instances
  Apache::Site <| tag != $::hostname and tag != 'all' |> {
    ensure => absent,
  }

  # Remove untagged database instances
  Database::Instance <| tag != $::hostname and tag != 'all' |> {
    ensure => absent,
  }

  # Remove untagged ikiwiki instances
  Ikiwiki::Instance <| tag != $::hostname and tag != 'all' |> {
    ensure => absent,
  }
}