aboutsummaryrefslogtreecommitdiff
path: root/manifests/vm/instance.pp
blob: 4e8233f7c68d77b1f7eaf3cf4ff1fb87940b708a (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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# Define a vm instance
define nodo::vm::instance(
 $context,
 $distro                = 'jessie',
 $ensure                = 'running',
 $proxy                 = false,
 $puppetmaster          = false,
 $gitd                  = false,
 $mail                  = false,
 $icecast               = false,
 $sound                 = false,
 $tor                   = false,
 $ticket                = false,
 $dns                   = false,
 $jabber                = false,
 $mumble                = false,
 $gobby                 = false,
 $yacy                  = false,
 $rsync                 = false,
 $avahi                 = false,
 $munin_port            = false,
 $monkeysphere_ssh_port = false,
 $network_prefix        = hiera("nodo::vm::network_prefix", "192.168.0"),
 $puppetmaster_port     = '8140',
 $puppetmaster_nonssl_port = '8141',
) {

  # Instance id
  if $context <= 9 {
    $id = "0$context"
  } else {
    $id = $context
  }

  # Tor port
  case $tor_port {
    '': { $tor_port = "9001" }
  }

  $dev = hiera('nodo::vm::interface', 'eth0')

  # Apply firewall rules just for running vservers
  case $ensure {
    'running': {
      firewall::vserver::ssh { "$name":
        destination => "$network_prefix.$context",
        port_orig => "22$id",
        port_dest => "22",
      }

      firewall::vserver::munin { "$name":
        destination => "$network_prefix.$context",
        port_orig   => "49$id",
        port_dest   => "49$id",
        zone        => 'vm',
      }

      if $proxy {
        class {
          "firewall::vserver::http":  destination => "$network_prefix.$context";
          "firewall::vserver::https": destination => "$network_prefix.$context";
        }
      }

      if $puppetmaster {
        class {
          "firewall::vserver::puppetmaster":
            destination              => "$network_prefix.$context",
            puppetmaster_port        => $puppetmaster_port,
            puppetmaster_nonssl_port => $puppetmaster_nonssl_port,
            zone                     => 'vm',
        }
      }

      if $gitd {
        class {
          "firewall::vserver::gitd":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $icecast {
        class {
          "firewall::vserver::icecast": 
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $mail {
        class {
          "firewall::vserver::mail":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $dns {
        class {
          "firewall::vserver::dns": destination => "$network_prefix.$context";
        }
      }

      if $tor {
        class {
          "firewall::vserver::tor":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $jabber {
        class {
          "firewall::vserver::jabber":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $mumble {
        class {
          "firewall::vserver::mumble":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $gobby {
        class {
          "firewall::vserver::gobby":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $yacy {
        class {
          "firewall::vserver::yacy":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $rsync {
        class {
          "firewall::vserver::rsync":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }

      if $avahi {
        class {
          "firewall::vserver::mdns":
            destination => "$network_prefix.$context",
            zone        => 'vm',
        }
      }
    }
  }
}