summaryrefslogtreecommitdiff
path: root/puppet/modules/site_shorewall/manifests/couchdb/bigcouch.pp
blob: 207406504b7969579f861359d43a64b4d7601157 (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
class site_shorewall::couchdb::bigcouch {

  include site_shorewall::defaults

  $stunnel = hiera('stunnel')

  # Erlang Port Mapper Daemon (epmd) stunnel server/clients
  $epmd_clients         = $stunnel['epmd_clients']
  $epmd_server          = $stunnel['epmd_server']
  $epmd_server_port     = $epmd_server['accept']
  $epmd_server_connect  = $epmd_server['connect']

  # Erlang Distributed Node Protocol (ednp) stunnel server/clients
  $ednp_clients         = $stunnel['ednp_clients']
  $ednp_server          = $stunnel['ednp_server']
  $ednp_server_port     = $ednp_server['accept']
  $ednp_server_connect  = $ednp_server['connect']

  # define macro for incoming services
  file { '/etc/shorewall/macro.leap_bigcouch':
    content => "PARAM   -       -       tcp    ${epmd_server_port},${ednp_server_port}",
    notify  => Service['shorewall'],
    require => Package['shorewall']
  }

  shorewall::rule {
      'net2fw-bigcouch':
        source      => 'net',
        destination => '$FW',
        action      => 'leap_bigcouch(ACCEPT)',
        order       => 300;
  }

  # setup DNAT rules for each epmd
  $epmd_shorewall_dnat_defaults = {
    'source'          => '$FW',
    'proto'           => 'tcp',
    'destinationport' => regsubst($epmd_server_connect, '^([0-9.]+:)([0-9]+)$', '\2')
  }
  create_resources(site_shorewall::couchdb::dnat, $epmd_clients, $epmd_shorewall_dnat_defaults)

  # setup DNAT rules for each ednp
  $ednp_shorewall_dnat_defaults = {
    'source'          => '$FW',
    'proto'           => 'tcp',
    'destinationport' => regsubst($ednp_server_connect, '^([0-9.]+:)([0-9]+)$', '\2')
  }
  create_resources(site_shorewall::couchdb::dnat, $ednp_clients, $ednp_shorewall_dnat_defaults)

}