| 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
 | # Define a virtual server instance
define nodo::subsystem::virtual::instance(
 $context,
 $ensure                = 'running',
 $proxy                 = false,
 $puppetmaster          = false,
 $gitd                  = false,
 $mail                  = false,
 $icecast               = false,
 $sound                 = false,
 $tor                   = false,
 $ticket                = false,
 $memory_limit          = false,
 $dns                   = false,
 $jabber                = false,
 $mumble                = false,
 $gobby                 = false,
 $yacy                  = false,
 $rsync                 = false,
 $avahi                 = false,
 $implementation        = false
) {
  # Instance id
  if $context <= 9 {
    $id = "0$context"
  } else {
    $id = $context
  }
  # Puppetmaster ssl port
  case $puppetmaster_port {
    '': { $puppetmaster_port = "8140" }
  }
  # Set puppetmaster non-ssl port
  case $puppetmaster_nonssl_port {
    '': { $puppetmaster_nonssl_port = "8141" }
  }
  # Tor port
  case $tor_port {
    '': { $tor_port = "9001" }
  }
  $dev = hiera('nodo::subsystem::vm::interface', 'eth0')
  # Apply firewall rules just for running virtual machines
  case $ensure {
    'running': {
      firewall::virtual::ssh { "$name":
        destination => "192.168.0.$context",
        port_orig => "22$id",
        port_dest => "22",
      }
      if $proxy {
        class {
          "firewall::virtual::http":  destination => "192.168.0.$context";
          "firewall::virtual::https": destination => "192.168.0.$context";
        }
      }
      if $puppetmaster {
        class {
          "firewall::virtual::puppetmaster":
            destination              => "192.168.0.$context",
            puppetmaster_port        => $puppetmaster_port,
            puppetmaster_nonssl_port => $puppetmaster_nonssl_port,
        }
      }
      if $gitd {
        class {
          "firewall::virtual::gitd": destination => "192.168.0.$context";
        }
      }
      if $icecast {
        class {
          "firewall::virtual::icecast": destination => "192.168.0.$context";
        }
      }
      if $mail {
        class {
          "firewall::virtual::mail": destination => "192.168.0.$context";
        }
      }
      if $dns {
        class {
          "firewall::virtual::dns": destination => "192.168.0.$context";
        }
      }
      if $tor {
        class {
          "firewall::virtual::tor": destination => "192.168.0.$context";
        }
      }
      if $jabber {
        class {
          "firewall::virtual::jabber": destination => "192.168.0.$context";
        }
      }
      if $mumble {
        class {
          "firewall::virtual::mumble": destination => "192.168.0.$context";
        }
      }
      if $gobby {
        class {
          "firewall::virtual::gobby": destination => "192.168.0.$context";
        }
      }
      if $yacy {
        class {
          "firewall::virtual::yacy": destination => "192.168.0.$context";
        }
      }
      if $rsync {
        class {
          "firewall::virtual::rsync": destination => "192.168.0.$context";
        }
      }
      if $avahi {
        class {
          "firewall::virtual::mdns": destination => "192.168.0.$context";
        }
      }
    }
  }
}
 |