Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / spec / acceptance / all_rules_spec.rb @ b5874974

Historique | Voir | Annoter | Télécharger (4,17 ko)

1 c82b960a Steve Traylen
# frozen_string_literal: true
2
3 cfcafde5 Steve Traylen
require 'spec_helper_acceptance'
4
5
describe 'nftables class' do
6
  context 'configure all nftables rules' do
7
    it 'works idempotently with no errors' do
8
      pp = <<-EOS
9
      # default mask of firewalld service fails if service is not installed.
10
      # https://tickets.puppetlabs.com/browse/PUP-10814
11
      # Disable all default rules and include below explicitly
12
      class { 'nftables':
13
        firewalld_enable => false,
14
        out_ntp          => false,
15
        out_http         => false,
16
        out_https        => false,
17
        out_icmp         => false,
18
        in_ssh           => false,
19
        in_icmp          => false,
20
      }
21
      include nftables::rules::icmp
22
      include nftables::rules::dns
23
      include nftables::rules::node_exporter
24
      include nftables::rules::nfs3
25
      include nftables::rules::ssh
26
      include nftables::rules::dhcpv6_client
27
      include nftables::rules::afs3_callback
28
      include nftables::rules::ospf
29
      include nftables::rules::http
30
      include nftables::rules::puppet
31
      include nftables::rules::icinga2
32
      include nftables::rules::tor
33
      include nftables::rules::ospf3
34
      include nftables::rules::ceph_mon
35
      include nftables::rules::smtp_submission
36
      include nftables::rules::https
37
      include nftables::rules::nfs
38
      include nftables::rules::smtps
39
      include nftables::rules::smtp
40
      include nftables::rules::ceph
41 1ee2f66b Giuseppe Lo Presti
      include nftables::rules::samba
42 771b3256 Nacho Barrientos
      include nftables::rules::activemq
43 6be2adf7 Luis Fernández Álvarez
      include nftables::rules::docker_ce
44 cd2a3cbf Nacho Barrientos
      include nftables::rules::qemu
45 cfcafde5 Steve Traylen
      include nftables::rules::out::postgres
46
      include nftables::rules::out::icmp
47
      include nftables::rules::out::dns
48
      include nftables::rules::out::nfs3
49
      include nftables::rules::out::ssh
50
      include nftables::rules::out::kerberos
51
      include nftables::rules::out::dhcpv6_client
52
      include nftables::rules::out::ospf
53
      include nftables::rules::out::openafs_client
54
      include nftables::rules::out::http
55
      include nftables::rules::out::ssh::remove
56
      class{'nftables::rules::out::puppet':
57 04176b0e mh
        puppetserver => '127.0.0.1',
58 cfcafde5 Steve Traylen
      }
59
      include nftables::rules::out::all
60
      include nftables::rules::out::tor
61
      include nftables::rules::out::ospf3
62
      include nftables::rules::out::mysql
63
      include nftables::rules::out::ceph_client
64
      include nftables::rules::out::https
65
      include nftables::rules::out::dhcp
66
      include nftables::rules::out::nfs
67
      include nftables::rules::out::smtp
68 19908f41 mh
      include nftables::rules::out::smtp_client
69
      include nftables::rules::out::imap
70
      include nftables::rules::out::pop3
71 cfcafde5 Steve Traylen
      include nftables::rules::out::chrony
72
      include nftables::rules::out::wireguard
73
      include nftables::rules::wireguard
74
      include nftables::services::dhcpv6_client
75
      include nftables::services::openafs_client
76 c94658e1 Nacho Barrientos
      nftables::set{'my_test_set':
77
        type       => 'ipv4_addr',
78
        elements   => ['192.168.0.1', '10.0.0.2'],
79
        table      => ['inet-filter', 'ip-nat'],
80
      }
81 cfcafde5 Steve Traylen
      # nftables cannot be started in docker so replace service with a validation only.
82
      systemd::dropin_file{"zzz_docker_nft.conf":
83
        ensure  => present,
84
        unit    => "nftables.service",
85
        content => [
86
          "[Service]",
87
          "ExecStart=",
88
          "ExecStart=/sbin/nft -c -I /etc/nftables/puppet -f /etc/sysconfig/nftables.conf",
89
          "ExecReload=",
90
          "ExecReload=/sbin/nft -c -I /etc/nftables/puppet -f /etc/sysconfig/nftables.conf",
91
          "",
92
          ].join("\n"),
93
        notify  => Service["nftables"],
94
      }
95
      EOS
96
      # Run it twice and test for idempotency
97
      apply_manifest(pp, catch_failures: true)
98
      apply_manifest(pp, catch_changes: true)
99
    end
100
101
    describe package('nftables') do
102
      it { is_expected.to be_installed }
103
    end
104
105
    describe service('nftables') do
106
      it { is_expected.to be_running }
107
      it { is_expected.to be_enabled }
108
    end
109
110 b5874974 Steve Traylen
    describe file('/etc/nftables/puppet.nft', '/etc/systemd/system/nftables.service.d/puppet_nft.conf') do
111 cfcafde5 Steve Traylen
      it { is_expected.to be_file }
112
    end
113
114
    describe file('/etc/nftables/puppet') do
115
      it { is_expected.to be_directory }
116
    end
117
  end
118
end