Puppet Class: iptables::service
- Defined in:
- manifests/service.pp
Overview
Manage the IPTables and IP6Tables services
This also installs fallback startup scripts that come into play should the regular processes fail to start due to a race condition with DNS.
| 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 | # File 'manifests/service.pp', line 15
class iptables::service (
  Variant[Enum['ignore','firewalld'],Boolean] $enable = pick(getvar('iptables::enable'),true),
  Boolean                                     $ipv6   = pick(getvar('iptables::ipv6'),true)
) {
  simplib::assert_metadata($module_name)
  if $enable != 'ignore' {
    if $enable {
      $_ensure = 'running'
      $_enable = true
    }
    else {
      $_ensure = 'stopped'
      $_enable = false
    }
    file { '/etc/init.d/iptables':
      ensure  => 'file',
      owner   => 'root',
      group   => 'root',
      mode    => '0755',
      content => file("${module_name}/iptables"),
      seltype => 'iptables_initrc_exec_t',
    }
    # --------------------------------------------------
    # Set the iptables startup script to fail safe.
    #
    file { '/etc/init.d/iptables-retry':
      ensure  => 'file',
      owner   => 'root',
      group   => 'root',
      mode    => '0744',
      content => file("${module_name}/iptables-retry"),
      seltype => 'iptables_initrc_exec_t',
    }
    service { 'iptables':
      ensure     => $_ensure,
      enable     => $_enable,
      hasrestart => false,
      restart    => '/sbin/iptables-restore /etc/sysconfig/iptables || ( /sbin/iptables-restore /etc/sysconfig/iptables.bak && exit 3 )',
      hasstatus  => true,
      require    => File['/etc/init.d/iptables'],
      provider   => 'redhat',
    }
    service { 'iptables-retry':
      enable   => $_enable,
      require  => File['/etc/init.d/iptables-retry'],
      provider => 'redhat',
    }
    if $ipv6 and $facts['ipv6_enabled'] {
      file { '/etc/init.d/ip6tables':
        ensure  => 'file',
        owner   => 'root',
        group   => 'root',
        mode    => '0755',
        seltype => 'iptables_initrc_exec_t',
        content => file("${module_name}/ip6tables")
      }
      file { '/etc/init.d/ip6tables-retry':
        ensure  => 'file',
        owner   => 'root',
        group   => 'root',
        mode    => '0744',
        seltype => 'iptables_initrc_exec_t',
        content => file("${module_name}/ip6tables-retry")
      }
      service { 'ip6tables':
        ensure     => $_ensure,
        enable     => $_enable,
        hasrestart => false,
        restart    => '/sbin/ip6tables-restore /etc/sysconfig/ip6tables || ( /sbin/ip6tables-restore /etc/sysconfig/ip6tables.bak && exit 3 )',
        hasstatus  => true,
        require    => File['/etc/init.d/ip6tables'],
        provider   => 'redhat',
      }
      service { 'ip6tables-retry':
        enable   => true,
        require  => File['/etc/init.d/ip6tables-retry'],
        provider => 'redhat',
      }
    }
    # firewalld should be disabled
    service { 'firewalld':
      ensure => 'stopped',
      enable => false,
    }
    exec { 'fully stop firewalld':
      command => 'pkill firewalld',
      onlyif  => 'pgrep firewalld',
      path    => [
        '/bin',
        '/usr/bin',
      ],
      require => Service['firewalld'],
    }
  }
} |