From 080aaeed719f1a369c82ced7acb3bf407b9f6dad Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Sat, 17 Dec 2016 16:17:40 +0200 Subject: [PATCH] - Start work on role (just installation, mail alias, service handling, minimal tests) - Better assertions. --- defaults/main.yml | 2 ++ handlers/main.yml | 9 +++++++++ tasks/main.yml | 34 ++++++++++++++++++++++++++++++++-- tests/test_dhcp.py | 16 ++++++++++++++++ vars/main.yml | 12 ++++++++++++ 5 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 tests/test_dhcp.py diff --git a/defaults/main.yml b/defaults/main.yml index 9f04f6a..93fe545 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,2 +1,4 @@ --- # defaults file for dhcp + +dhcp_mail_alias: root diff --git a/handlers/main.yml b/handlers/main.yml index db28635..52b3170 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,2 +1,11 @@ --- # handlers file for dhcp + +- name: Update SMTPd database + when: ansible_os_family == 'OpenBSD' + command: /usr/bin/newaliases + +- name: Restart ISC DHCP server + service: + name: '{{ dhcp_service[ansible_os_family] }}' + state: restarted diff --git a/tasks/main.yml b/tasks/main.yml index bf4282f..0ca5564 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -4,5 +4,35 @@ - name: Assertions assert: that: - - ansible_os_family in ['OpenBSD', 'Debian'] - - ansible_distribution_release in ['6.0', 'xenial'] + - ansible_os_family in dhcp_service + - ansible_os_family in dhcp_user + - ansible_os_family in aliases_file + +- name: APT install + apt: + name: isc-dhcp-server + state: present + update_cache: yes + cache_valid_time: 3600 + +- name: Add mail alias + when: dhcp_mail_alias is defined + lineinfile: + dest: '{{ aliases_file[ansible_os_family] }}' + create: yes + line: '{{ dhcp_user[ansible_os_family] }}: {{ dhcp_mail_alias }}' + regexp: '{{ dhcp_user[ansible_os_family] }}:' + notify: + - Update SMTPd database + +- name: Enable service + service: + name: '{{ dhcp_service[ansible_os_family] }}' + state: running + enabled: yes + +- meta: flush_handlers + +- name: Wait for service to come online + wait_for: + port: 67 diff --git a/tests/test_dhcp.py b/tests/test_dhcp.py new file mode 100644 index 0000000..f898616 --- /dev/null +++ b/tests/test_dhcp.py @@ -0,0 +1,16 @@ +from testinfra.utils.ansible_runner import AnsibleRunner + +testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all') + + +def test_dhcp_service(Service, Socket, SystemInfo): + if SystemInfo.type == 'openbsd': + service = Service('dhcpd') + elif SystemInfo.type == 'debian': + service = Service('isc-dhcp-server') + assert service.is_running + try: + assert service.is_enabled + except NotImplementedError: + pass + assert Socket('tcp://0.0.0.0:80').is_listening diff --git a/vars/main.yml b/vars/main.yml index 2fb59b1..81f8915 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,2 +1,14 @@ --- # vars file for dhcp + +dhcp_service: + OpenBSD: dhcpd + Debian: isc-dhcp-server + +aliases_file: + OpenBSD: /etc/mail/aliases + Debian: /etc/aliases + +dhcp_user: + OpenBSD: _dhcp + Debian: dhcp -- GitLab