class zulip_ops::firewall { package { 'iptables-persistent': } concat { '/etc/iptables/rules.v4': ensure => present, mode => '0600', require => Package['iptables-persistent'], } concat::fragment { 'iptables-header.v4': target => '/etc/iptables/rules.v4', source => 'puppet:///modules/zulip_ops/iptables/header.v4', order => '01', } concat::fragment { 'iptables-trailer.v4': target => '/etc/iptables/rules.v4', source => 'puppet:///modules/zulip_ops/iptables/trailer.v4', order => '99', } concat { '/etc/iptables/rules.v6': ensure => present, mode => '0600', require => Package['iptables-persistent'], } concat::fragment { 'iptables-header.v6': target => '/etc/iptables/rules.v6', source => 'puppet:///modules/zulip_ops/iptables/header.v6', order => '01', } concat::fragment { 'iptables-trailer.v6': target => '/etc/iptables/rules.v6', source => 'puppet:///modules/zulip_ops/iptables/trailer.v6', order => '99', } service { 'netfilter-persistent': ensure => running, # Because there is no running process for this service, the normal status # checks fail. Because Puppet then thinks the service has been manually # stopped, it won't restart it. This fake status command will trick Puppet # into thinking the service is *always* running (which in a way it is, as # iptables is part of the kernel.) hasstatus => true, status => '/bin/true', # Under Debian, the "restart" parameter does not reload the rules, so tell # Puppet to fall back to stop/start, which does work. hasrestart => false, require => Package['iptables-persistent'], subscribe => [ Concat['/etc/iptables/rules.v4'], Concat['/etc/iptables/rules.v6'], ], } }