--- - hosts: all remote_user: root become: true vars: dig_package: Debian: dnsutils Ubuntu: dnsutils Fedora: bind-utils CentOS: bind-utils openSUSE Leap: bind-utils openSUSE Tumbleweed: bind-utils Archlinux: bind-tools configure_obs_repo: Fedora: | dnf config-manager --add-repo https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/Fedora_{{ ansible_distribution_major_version }}/home:CZ-NIC:{{ item }}.repo CentOS: | yum install -y wget && wget -i wget https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/CentOS_7_EPEL/home:CZ-NIC:{{ item }}.repo -O /etc/yum.repos.d/home:CZ-NIC:{{ item }}.repo Debian: | echo 'deb http://download.opensuse.org/repositories/home:/CZ-NIC:/{{ item }}/Debian_9.0/ /' > /etc/apt/sources.list.d/{{ item }}.list && wget -nv https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/Debian_9.0/Release.key -O Release.key && apt-key add - < Release.key && apt-get update Ubuntu: | echo 'deb http://download.opensuse.org/repositories/home:/CZ-NIC:/{{ item }}/xUbuntu_{{ ansible_distribution_version }}/ /' > /etc/apt/sources.list.d/{{ item }}.list && wget -nv https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/xUbuntu_{{ ansible_distribution_version }}/Release.key -O Release.key && apt-key add - < Release.key && apt-get update openSUSE Tumbleweed: | zypper addrepo https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/openSUSE_Tumbleweed/home:CZ-NIC:{{ item }}.repo && zypper --gpg-auto-import-keys refresh openSUSE Leap: | zypper addrepo https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/openSUSE_Leap_15.0/home:CZ-NIC:{{ item }}.repo && zypper --gpg-auto-import-keys refresh show_package_version: Archlinux: pacman -Qi knot | grep '^Version' Fedora: &pkg_version_rpm | rpm -qi knot | grep '^Version' CentOS: *pkg_version_rpm openSUSE Leap: *pkg_version_rpm openSUSE Tumbleweed: *pkg_version_rpm Debian: &pkg_version_dpkg | dpkg -s knot | grep '^Version' Ubuntu: *pkg_version_dpkg vars_files: - repos.yaml gather_facts: false pre_tasks: - name: install python3 (Arch) raw: | (pacman-key --init && pacman-key --populate archlinux && \ pacman -Sy python3 --noconfirm) || : ignore_errors: true - name: gather facts setup: tasks: - name: install epel package: name: epel-release state: present when: ansible_distribution == 'CentOS' - name: configure OBS repository shell: "{{ configure_obs_repo[ansible_distribution] }}" args: warn: false with_items: "{{ repos }}" when: ansible_distribution_file_variety != 'Archlinux' - block: - name: configure OBS repository (Arch) blockinfile: block: | [home_CZ-NIC_{{ item }}_Arch] SigLevel = Never Server = https://download.opensuse.org/repositories/home:/CZ-NIC:/{{ item }}/Arch/$arch insertbefore: '^\[core\]' path: /etc/pacman.conf state: present with_items: "{{ repos }}" - name: sync repos (Arch) shell: pacman -Syu --noconfirm args: warn: false when: ansible_distribution_file_variety == 'Archlinux' - name: install knot package: name: knot state: latest - name: get installed package version shell: "{{ show_package_version[ansible_distribution] }}" args: warn: false register: package_version - name: install dig package: name: "{{ dig_package[ansible_distribution] }}" state: present - name: testing block block: - name: create example.com zone copy: dest: /etc/knot/example.com.zone content: | $ORIGIN example.com. $TTL 3600 @ SOA dns1.example.com. hostmaster.example.com. ( 2010111213 ; serial 6h ; refresh 1h ; retry 1w ; expire 1d ) ; minimum NS dns1 dns1 A 192.0.2.1 - name: create config blockinfile: dest: /etc/knot/knot.conf block: | zone: - domain: example.com file: "/etc/knot/example.com.zone" - name: start knot.service service: name: knot.service state: restarted - name: resolve dns1.example.com shell: dig @127.0.0.1 dns1.example.com A register: res failed_when: '"192.0.2.1" not in res.stdout' - name: reload knot.service service: name: knot.service state: reloaded - name: resolve dns1.example.com shell: dig @127.0.0.1 dns1.example.com A register: res failed_when: '"192.0.2.1" not in res.stdout' always: - name: show installed version debug: var: package_version.stdout