From e016a7b20c48c1c4659ee4eacee95eb333f390f7 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sat, 11 Jan 2020 23:35:44 +0000 Subject: [PATCH] chore(service): Improve service setup and configuration --- defaults/main.yml | 6 ++++++ handlers/main.yml | 10 +++++++--- molecule/default/Dockerfile.j2 | 6 ++++-- tasks/disable_dnsstubresolver.yml | 14 ++++++++++++++ tasks/main.yml | 15 ++++----------- tasks/setup_redhat.yml | 2 +- tasks/systemd_service.yml | 26 ++++++++++++++++++++++++++ 7 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 tasks/disable_dnsstubresolver.yml create mode 100644 tasks/systemd_service.yml diff --git a/defaults/main.yml b/defaults/main.yml index 305a811..7c99236 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -10,6 +10,9 @@ adguardhome_config_dir: "/opt/{{ adguardhome_service_name }}/config" adguardhome_data_dir: "/opt/{{ adguardhome_service_name }}" adguardhome_tmp_dir: /tmp +adguardhome_service_enable: true +adguardhome_service_start: true + adguardhome_bin_name: AdGuardHome adguardhome_config_name: AdGuardHome.yml @@ -20,3 +23,6 @@ adguardhome_unpack_dir: "{{ adguardhome_tmp_dir }}/AdGuardHome-{{ adguardhome_ve adguardhome_arch: "{% if ansible_architecture == 'x86_64' %}amd64{% elif ansible_architecture == 'aarch64' %}arm64{% else %}arm{% endif %}" adguardhome_archive: "AdGuardHome_linux_{{ adguardhome_arch }}.tar.gz" adguardhome_download_url_base: "https://github.com/AdguardTeam/AdGuardHome/releases/download" + +# Disable DNSStubResolver if systemd-resolved servicee is running. +adguardhome_disable_systemd_dnsstubresolver: true diff --git a/handlers/main.yml b/handlers/main.yml index aced512..d3d5636 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,6 +1,10 @@ --- -- name: restart adguardhome +- name: reload systemd daemon systemd: - name: adguardhome + daemon_reload: true + +- name: restart adguardhome + service: + name: "{{ adguardhome_service_name }}" state: restarted - daemon_reload: yes + when: adguardhome_service_start diff --git a/molecule/default/Dockerfile.j2 b/molecule/default/Dockerfile.j2 index d04b2a5..818a72d 100644 --- a/molecule/default/Dockerfile.j2 +++ b/molecule/default/Dockerfile.j2 @@ -19,8 +19,10 @@ RUN if [ $(command -v apt-get) ]; then \ dnf clean all; \ elif [ $(command -v yum) ]; then \ yum makecache fast && \ - yum install -y python3 python3-pip sudo yum-plugin-ovl bash \ - net-tools && \ + yum install -y epel-release && \ + yum update -y && \ + yum install -y python python-pip python-setuptools sudo \ + yum-plugin-ovl bash net-tools && \ sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && \ yum clean all; \ elif [ $(command -v zypper) ]; then \ diff --git a/tasks/disable_dnsstubresolver.yml b/tasks/disable_dnsstubresolver.yml new file mode 100644 index 0000000..2a7ee4d --- /dev/null +++ b/tasks/disable_dnsstubresolver.yml @@ -0,0 +1,14 @@ +--- +- name: Disable DNSStubListener + ini_file: + path: /etc/systemd/resolved.conf + section: Resolve + option: DNSStubListener + value: "no" + notify: restart systemd-resolved + +- name: Symlink /etc/resolv.conf to /run/systemd/resolve/resolv.conf + file: + src: /run/systemd/resolve/resolv.conf + dest: /etc/resolv.conf + state: link diff --git a/tasks/main.yml b/tasks/main.yml index 9861a9c..5ec5ef8 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -84,14 +84,7 @@ when: >- adguardhome_user == "root" -- name: Install sytemd service - template: - src: adguardhome.service.j2 - dest: /etc/systemd/system/adguardhome.service - mode: "755" - notify: restart adguardhome - -- name: Ensure service is enabled - service: - name: adguardhome - enabled: yes +- name: Install systemd servicee + include_tasks: systemd_service.yml + when: >- + ansible_service_mgr == "systemd" and adguardhome_service_enable diff --git a/tasks/setup_redhat.yml b/tasks/setup_redhat.yml index ee8c26b..de0126d 100644 --- a/tasks/setup_redhat.yml +++ b/tasks/setup_redhat.yml @@ -1,5 +1,5 @@ --- -- name: Install dependencies +- name: Install system dependencies package: name: libcap state: present diff --git a/tasks/systemd_service.yml b/tasks/systemd_service.yml new file mode 100644 index 0000000..510d77f --- /dev/null +++ b/tasks/systemd_service.yml @@ -0,0 +1,26 @@ +--- +- name: Get info about running services + service_facts: + +- name: Disable systemd-resolved's DNSStubResolver + include_tasks: disable_dnsstubresolver.yml + when: >- + adguardhome_disable_systemd_dnsstubresolver and + ansible_facts.services + .get("systemd-resolved.service", {}) + .get("state") == "running" + +- name: Install systemd service + template: + src: adguardhome.service.j2 + dest: "/etc/systemd/system/{{ adguardhome_service_name }}.service" + mode: "755" + register: adguardhome_systemd_unit + notify: + - reload systemd daemon + - restart adguardhome + +- name: Ensure service is enabled + service: + name: "{{ adguardhome_service_name }}" + enabled: yes