Loading handlers/main.yml +4 −0 Original line number Diff line number Diff line Loading @@ -5,3 +5,7 @@ service: name: nsd state: restarted - name: Update SMTPd database when: ansible_os_family == 'OpenBSD' command: /usr/bin/newaliases tasks/main.yml +15 −0 Original line number Diff line number Diff line Loading @@ -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 tests/test_nsd.py +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') vars/main.yml +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
handlers/main.yml +4 −0 Original line number Diff line number Diff line Loading @@ -5,3 +5,7 @@ service: name: nsd state: restarted - name: Update SMTPd database when: ansible_os_family == 'OpenBSD' command: /usr/bin/newaliases
tasks/main.yml +15 −0 Original line number Diff line number Diff line Loading @@ -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
tests/test_nsd.py +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')
vars/main.yml +8 −0 Original line number Diff line number Diff line Loading @@ -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