Commit b21aa98b authored by nimrod's avatar nimrod
Browse files

- Flush handlers at the end of the role and wait for NSD to start listening on

  port 53.
- Add email alias to root.
- Added some more tests.
parent bc45795a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -5,3 +5,7 @@
  service:
      name: nsd
      state: restarted

- name: Update SMTPd database
  when: ansible_os_family == 'OpenBSD'
  command: /usr/bin/newaliases
+15 −0
Original line number Diff line number Diff line
@@ -53,8 +53,23 @@
  notify:
      - Restart NSD

- name: Alias emails to root
  lineinfile:
      dest: '{{ aliases_file[ansible_os_family] }}'
      create: yes
      line: '{{ nsd_user[ansible_os_family] }}: root'
      regexp: '{{ nsd_user[ansible_os_family] }}:'
  notify:
      - Update SMTPd database

- name: Enable NSD
  service:
      name: nsd
      enabled: yes
      state: started

- meta: flush_handlers

- name: Wait for NSD to recieve requests
  wait_for:
      port: 53
+39 −2
Original line number Diff line number Diff line
def test_nsd(Command, Service, Ansible):
    assert Command('nsd -v').rc == 0
    assert Service('nsd').is_running


def test_nsd_service(Service):
    service = Service('nsd')
    assert service.is_running
    try:
        assert service.is_enabled
    except NotImplementedError:
        pass


def test_nsd_config(Command, File, Ansible):
    if Ansible('setup')['ansible_facts']['ansible_os_family'] == 'OpenBSD':
        assert Command('nsd-checkconf /var/nsd/etc/nsd.conf')
    elif Ansible('setup')['ansible_facts']['ansible_os_family'] == 'Debian':
        assert Command('nsd-checkconf /etc/nsd/nsd.conf')
        assert Service('nsd').is_enabled


def test_nsd_directories(File, Ansible):
    ansible_os_family = Ansible('setup')['ansible_facts']['ansible_os_family']
    if ansible_os_family == 'OpenBSD':
        assert File('/var/nsd/etc/nsd.conf.d').is_directory
        assert File('/var/nsd/zones').is_directory
    elif ansible_os_family == 'Debian':
        assert File('/etc/nsd/nsd.conf.d').is_directory
        assert File('/etc/nsd').is_directory


def test_nsd_socket(Socket):
    assert Socket('udp://0.0.0.0:53').is_listening


def test_nsd_test_zone(Command):
    assert '127.0.0.2' in Command('dig @127.0.0.1 a.testzone').stdout


def test_nsd_alias(File, Ansible, User):
    ansible_os_family = Ansible('setup')['ansible_facts']['ansible_os_family']
    if ansible_os_family == 'Debian':
        assert User('nsd').exists
        assert File('/etc/aliases').contains('nsd: root')
    elif ansible_os_family == 'OpenBSD':
        assert User('_nsd').exists
        assert File('/etc/mail/aliases').contains('_nsd: root')
+8 −0
Original line number Diff line number Diff line
@@ -4,3 +4,11 @@
nsd_conf: '{{ "/var/nsd/etc/nsd.conf" if ansible_os_family == "OpenBSD" else "/etc/nsd/nsd.conf" }}'
nsd_conf_d: '{{ nsd_conf }}.d'
nsd_zones: '{{ "/var/nsd/zones" if ansible_os_family == "OpenBSD" else "/etc/nsd" }}'

aliases_file:
    OpenBSD: /etc/mail/aliases
    Debian: /etc/aliases

nsd_user:
    OpenBSD: _nsd
    Debian: nsd