summaryrefslogtreecommitdiff
path: root/manifests/base.pp
blob: cc1bb4ab7f75ab02e83f05d5db74f7ed4ad6e92d (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
# Base class
class nginx::base {

  $ssl = $nginx_ssl ? {
    false   => false,
    default => true,
  }

  # Setup packages
  package { "nginx": ensure => installed, }

  # Config folders, see http://projects.reductivelabs.com/issues/86
  file { [ "/etc/nginx", "/etc/nginx/sites-available", "/etc/nginx/sites-enabled" ]:
    ensure  => directory,
    owner   => "root",
    group   => "root",
  }

  service { "nginx":
    enable     => true,
    ensure     => running,
    hasrestart => true,
    require    => Package["nginx"],
  }

  define site($ensure = present, $source = 'file') {
    # Proxy config file
    case $source {
      'file': {
        file { "/etc/nginx/sites-available/$name":
          source  => "puppet:///modules/site-nginx/$name",
          owner   => "root",
          group   => "root",
          mode    => 0644,
          ensure  => $ensure,
          notify  => Service["nginx"],
          require => File["/etc/nginx/sites-available"],
        }
      }
      'template': {
        file { "/etc/nginx/sites-available/$name":
          content => template("nginx/$name.erb"),
          owner   => "root",
          group   => "root",
          mode    => 0644,
          ensure  => $ensure,
          notify  => Service["nginx"],
          require => File["/etc/nginx/sites-available"],
        }
      }
     'none': {
        file { "/etc/nginx/sites-available/$name":
          owner   => "root",
          group   => "root",
          mode    => 0644,
          ensure  => $ensure,
          notify  => Service["nginx"],
          require => File["/etc/nginx/sites-available"],
        }
      }
    }

    $link = $ensure ? {
      present => "/etc/nginx/sites-available/$name",
      default => absent,
    }
  
    # Symlink to enable proxy configuration
    file { "/etc/nginx/sites-enabled/$name":
      ensure  => $link,
      require => File["/etc/nginx/sites-enabled"],
      notify  => Service["nginx"],
    }
  }

  # Main configuration
  file { "/etc/nginx/nginx.conf":
    content => template("nginx/nginx.conf.erb"),
    owner   => "root",
    group   => "root",
    mode    => 0644,
    ensure  => present,
    notify  => Service["nginx"],
  }
}