mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
This means that services will only open their ports if they are actually run, without having to clutter rules.v4 with a log of `if` statements. This does not go as far as using `puppetlabs/firewall`[1] because that would represent an additional DSL to learn; raw IPtables sections can easily be inserted into the generated iptables file via `concat::fragment` (either inline, or as a separate file), but config can be centralized next to the appropriate service. [1] https://forge.puppet.com/modules/puppetlabs/firewall
38 lines
1.2 KiB
Puppet
38 lines
1.2 KiB
Puppet
class zulip_ops::firewall {
|
|
package { 'iptables-persistent': }
|
|
concat { '/etc/iptables/rules.v4':
|
|
ensure => present,
|
|
mode => '0600',
|
|
require => Package['iptables-persistent'],
|
|
}
|
|
|
|
concat::fragment { 'iptables-header':
|
|
target => '/etc/iptables/rules.v4',
|
|
source => 'puppet:///modules/zulip_ops/iptables/header',
|
|
order => '01',
|
|
}
|
|
concat::fragment { 'iptables-trailer':
|
|
target => '/etc/iptables/rules.v4',
|
|
source => 'puppet:///modules/zulip_ops/iptables/trailer',
|
|
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'],
|
|
}
|
|
}
|