summaryrefslogtreecommitdiffstats
path: root/distro/tests
diff options
context:
space:
mode:
Diffstat (limited to 'distro/tests')
-rw-r--r--distro/tests/.ansible.cfg6
-rw-r--r--distro/tests/README.md41
-rw-r--r--distro/tests/ansible-roles/knot_dns/defaults/main.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/tasks/configure_zone.yaml24
-rw-r--r--distro/tests/ansible-roles/knot_dns/tasks/main.yaml40
-rw-r--r--distro/tests/ansible-roles/knot_dns/tasks/reload_knot.yaml15
-rw-r--r--distro/tests/ansible-roles/knot_dns/tasks/restart_knot.yaml15
-rw-r--r--distro/tests/ansible-roles/knot_dns/tasks/test_tcp.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/tasks/test_udp.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/vars/CentOS.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/vars/Debian.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/vars/Fedora.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/vars/Ubuntu.yaml5
-rw-r--r--distro/tests/ansible-roles/knot_dns/vars/openSUSE_Leap.yaml5
-rw-r--r--distro/tests/ansible-roles/obs_repos/defaults/main.yaml3
-rw-r--r--distro/tests/ansible-roles/obs_repos/tasks/CentOS.yaml12
-rw-r--r--distro/tests/ansible-roles/obs_repos/tasks/Debian.yaml14
-rw-r--r--distro/tests/ansible-roles/obs_repos/tasks/Fedora.yaml7
-rw-r--r--distro/tests/ansible-roles/obs_repos/tasks/Ubuntu.yaml13
-rw-r--r--distro/tests/ansible-roles/obs_repos/tasks/main.yaml11
-rw-r--r--distro/tests/ansible-roles/obs_repos/tasks/openSUSE_Leap.yaml17
-rw-r--r--distro/tests/ansible-roles/obs_repos/vars/CentOS.yaml2
-rw-r--r--distro/tests/ansible-roles/obs_repos/vars/Debian_10.yaml2
-rw-r--r--distro/tests/ansible-roles/obs_repos/vars/Debian_9.yaml2
-rw-r--r--distro/tests/ansible-roles/obs_repos/vars/Fedora.yaml2
-rw-r--r--distro/tests/ansible-roles/obs_repos/vars/Ubuntu.yaml2
-rw-r--r--distro/tests/ansible-roles/obs_repos/vars/openSUSE_Leap.yaml2
-rw-r--r--distro/tests/centos7/Vagrantfile29
-rw-r--r--distro/tests/centos7/ansible.cfg6
-rw-r--r--distro/tests/centos8/Vagrantfile30
-rw-r--r--distro/tests/centos8/ansible.cfg6
-rw-r--r--distro/tests/debian10/Vagrantfile27
-rw-r--r--distro/tests/debian10/ansible.cfg6
-rw-r--r--distro/tests/debian9/Vagrantfile26
-rw-r--r--distro/tests/debian9/ansible.cfg6
-rw-r--r--distro/tests/fedora32/Vagrantfile30
-rw-r--r--distro/tests/fedora32/ansible.cfg6
-rw-r--r--distro/tests/fedora33/Vagrantfile29
-rw-r--r--distro/tests/fedora33/ansible.cfg6
-rw-r--r--distro/tests/knot-dns-pkgtest.yaml12
-rw-r--r--distro/tests/leap15/Vagrantfile28
-rw-r--r--distro/tests/leap15/ansible.cfg6
-rw-r--r--distro/tests/repos.yaml2
-rwxr-xr-xdistro/tests/test-distro.sh21
-rw-r--r--distro/tests/ubuntu1604/Vagrantfile29
-rw-r--r--distro/tests/ubuntu1604/ansible.cfg6
-rw-r--r--distro/tests/ubuntu1804/Vagrantfile29
-rw-r--r--distro/tests/ubuntu1804/ansible.cfg6
-rw-r--r--distro/tests/ubuntu2004/Vagrantfile30
-rw-r--r--distro/tests/ubuntu2004/ansible.cfg6
-rw-r--r--distro/tests/ubuntu2010/Vagrantfile31
-rw-r--r--distro/tests/ubuntu2010/ansible.cfg6
52 files changed, 689 insertions, 0 deletions
diff --git a/distro/tests/.ansible.cfg b/distro/tests/.ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/.ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/README.md b/distro/tests/README.md
new file mode 100644
index 0000000..0012dfc
--- /dev/null
+++ b/distro/tests/README.md
@@ -0,0 +1,41 @@
+Requirements
+------------
+
+- ansible
+- vagrant
+- libvirt (+vagrant-libvirt) / virtualbox
+
+Usage
+-----
+
+`vagrant up` command is configured to trigger ansible provisioning
+which configures OBS repository, installs the knot package, creates
+a zone and config file, starts the knot.service and attempts to
+resolve the entry from created zone file.
+
+By default, the *knot-dns-devel* repo is used. To test the
+*knot-dns-latest* or *knot-dns-testing* repo, set it in `repos.yaml`
+(or use the test-distro.sh script which overwrites this file). If
+you're running tests in parallel, they all HAVE TO use the same repo.
+
+Run the following command for every distro (aka directory with
+Vagrantfile):
+
+```
+./test-distro.sh knot-dns-devel debian9
+```
+
+or
+
+```
+./test-distro.sh knot-dns-testing debian9
+```
+
+or
+
+```
+./test-distro.sh knot-dns-latest debian9
+```
+
+At the end of the test, the package version that was tested is
+printed out. Make sure you're testing what you intended to.
diff --git a/distro/tests/ansible-roles/knot_dns/defaults/main.yaml b/distro/tests/ansible-roles/knot_dns/defaults/main.yaml
new file mode 100644
index 0000000..0beb2ed
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/defaults/main.yaml
@@ -0,0 +1,5 @@
+---
+repos:
+ - knot-dns-latest
+update_packages: false
+distro: "{{ ansible_distribution | replace(' ', '_') }}"
diff --git a/distro/tests/ansible-roles/knot_dns/tasks/configure_zone.yaml b/distro/tests/ansible-roles/knot_dns/tasks/configure_zone.yaml
new file mode 100644
index 0000000..c6cce01
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/tasks/configure_zone.yaml
@@ -0,0 +1,24 @@
+---
+- name: create example.com zone
+ copy:
+ dest: /etc/knot/example.com.zone
+ mode: 0644
+ 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"
diff --git a/distro/tests/ansible-roles/knot_dns/tasks/main.yaml b/distro/tests/ansible-roles/knot_dns/tasks/main.yaml
new file mode 100644
index 0000000..ccaa671
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/tasks/main.yaml
@@ -0,0 +1,40 @@
+---
+- name: Include distribution specific vars
+ include_vars: "{{ distro }}.yaml"
+
+- name: Update all packages
+ package:
+ name: '*'
+ state: latest
+ when: update_packages|bool
+
+- name: Install packages
+ package:
+ name: "{{ packages }}"
+ state: latest
+
+- name: Always print package version at the end
+ block:
+
+ - include: configure_zone.yaml
+ - include: restart_knot.yaml
+
+ - include: test_udp.yaml
+ - include: test_tcp.yaml
+
+ - include: reload_knot.yaml
+
+ - include: test_udp.yaml
+ - include: test_tcp.yaml
+
+ always:
+
+ - name: Get installed package version
+ shell: "{{ show_package_version }}"
+ args:
+ warn: false
+ register: package_version
+
+ - name: Show installed version
+ debug:
+ var: package_version.stdout
diff --git a/distro/tests/ansible-roles/knot_dns/tasks/reload_knot.yaml b/distro/tests/ansible-roles/knot_dns/tasks/reload_knot.yaml
new file mode 100644
index 0000000..b7e681c
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/tasks/reload_knot.yaml
@@ -0,0 +1,15 @@
+---
+- block:
+ - name: Reload knot.service
+ service:
+ name: knot.service
+ state: reloaded
+ rescue:
+ - name: Get knot.service journal
+ shell: journalctl -u knot --since -20s
+ register: journal
+ - name: Print journal
+ debug:
+ var: journal
+ - name: Reload knot.service failed, see log above
+ shell: /bin/false
diff --git a/distro/tests/ansible-roles/knot_dns/tasks/restart_knot.yaml b/distro/tests/ansible-roles/knot_dns/tasks/restart_knot.yaml
new file mode 100644
index 0000000..08a3752
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/tasks/restart_knot.yaml
@@ -0,0 +1,15 @@
+---
+- block:
+ - name: Restart knot.service
+ service:
+ name: knot.service
+ state: restarted
+ rescue:
+ - name: Get knot.service journal
+ shell: journalctl -u knot --since -20s
+ register: journal
+ - name: Print journal
+ debug:
+ var: journal
+ - name: Restart knot.service failed, see log above
+ shell: /bin/false
diff --git a/distro/tests/ansible-roles/knot_dns/tasks/test_tcp.yaml b/distro/tests/ansible-roles/knot_dns/tasks/test_tcp.yaml
new file mode 100644
index 0000000..68dd8e9
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/tasks/test_tcp.yaml
@@ -0,0 +1,5 @@
+---
+- name: tcp_test resolve dns1.example.com
+ shell: kdig +tcp @127.0.0.1 dns1.example.com A
+ register: res
+ failed_when: '"192.0.2.1" not in res.stdout'
diff --git a/distro/tests/ansible-roles/knot_dns/tasks/test_udp.yaml b/distro/tests/ansible-roles/knot_dns/tasks/test_udp.yaml
new file mode 100644
index 0000000..6ab3245
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/tasks/test_udp.yaml
@@ -0,0 +1,5 @@
+---
+- name: udp_test resolve dns1.example.com
+ shell: kdig @127.0.0.1 dns1.example.com A
+ register: res
+ failed_when: '"192.0.2.1" not in res.stdout'
diff --git a/distro/tests/ansible-roles/knot_dns/vars/CentOS.yaml b/distro/tests/ansible-roles/knot_dns/vars/CentOS.yaml
new file mode 100644
index 0000000..90f7c9e
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/vars/CentOS.yaml
@@ -0,0 +1,5 @@
+---
+show_package_version: rpm -qi knot | grep '^Version'
+packages:
+ - knot
+ - knot-utils
diff --git a/distro/tests/ansible-roles/knot_dns/vars/Debian.yaml b/distro/tests/ansible-roles/knot_dns/vars/Debian.yaml
new file mode 100644
index 0000000..1b744d6
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/vars/Debian.yaml
@@ -0,0 +1,5 @@
+---
+show_package_version: dpkg -s knot | grep '^Version'
+packages:
+ - knot
+ - knot-dnsutils
diff --git a/distro/tests/ansible-roles/knot_dns/vars/Fedora.yaml b/distro/tests/ansible-roles/knot_dns/vars/Fedora.yaml
new file mode 100644
index 0000000..90f7c9e
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/vars/Fedora.yaml
@@ -0,0 +1,5 @@
+---
+show_package_version: rpm -qi knot | grep '^Version'
+packages:
+ - knot
+ - knot-utils
diff --git a/distro/tests/ansible-roles/knot_dns/vars/Ubuntu.yaml b/distro/tests/ansible-roles/knot_dns/vars/Ubuntu.yaml
new file mode 100644
index 0000000..1b744d6
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/vars/Ubuntu.yaml
@@ -0,0 +1,5 @@
+---
+show_package_version: dpkg -s knot | grep '^Version'
+packages:
+ - knot
+ - knot-dnsutils
diff --git a/distro/tests/ansible-roles/knot_dns/vars/openSUSE_Leap.yaml b/distro/tests/ansible-roles/knot_dns/vars/openSUSE_Leap.yaml
new file mode 100644
index 0000000..90f7c9e
--- /dev/null
+++ b/distro/tests/ansible-roles/knot_dns/vars/openSUSE_Leap.yaml
@@ -0,0 +1,5 @@
+---
+show_package_version: rpm -qi knot | grep '^Version'
+packages:
+ - knot
+ - knot-utils
diff --git a/distro/tests/ansible-roles/obs_repos/defaults/main.yaml b/distro/tests/ansible-roles/obs_repos/defaults/main.yaml
new file mode 100644
index 0000000..96c6b17
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/defaults/main.yaml
@@ -0,0 +1,3 @@
+---
+obs_distro: "{{ ansible_distribution | replace(' ', '_') }}"
+obs_repofile_url: "https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/{{ obs_repo_version }}/home:CZ-NIC:{{ item }}.repo"
diff --git a/distro/tests/ansible-roles/obs_repos/tasks/CentOS.yaml b/distro/tests/ansible-roles/obs_repos/tasks/CentOS.yaml
new file mode 100644
index 0000000..d777cbf
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/tasks/CentOS.yaml
@@ -0,0 +1,12 @@
+---
+- name: Install EPEL
+ yum:
+ name: epel-release
+ state: present
+
+- name: Download repo file(s)
+ get_url:
+ url: "{{ obs_repofile_url }}"
+ dest: /etc/yum.repos.d/home:CZ-NIC:{{ item }}.repo
+ mode: 0644
+ with_items: "{{ repos }}"
diff --git a/distro/tests/ansible-roles/obs_repos/tasks/Debian.yaml b/distro/tests/ansible-roles/obs_repos/tasks/Debian.yaml
new file mode 100644
index 0000000..9d70fd7
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/tasks/Debian.yaml
@@ -0,0 +1,14 @@
+---
+- name: Add upstream package signing key
+ get_url:
+ url: https://gitlab.nic.cz/knot/knot-resolver-release/raw/master/cznic-obs.gpg.asc
+ dest: /etc/apt/trusted.gpg.d/cznic-obs.gpg.asc
+ mode: 0644
+
+- name: Add OBS repo(s)
+ apt_repository:
+ repo: >
+ deb http://download.opensuse.org/repositories/home:/CZ-NIC:/{{ item }}/{{ obs_repo_version }}/ /
+ state: present
+ update_cache: true
+ with_items: "{{ repos }}"
diff --git a/distro/tests/ansible-roles/obs_repos/tasks/Fedora.yaml b/distro/tests/ansible-roles/obs_repos/tasks/Fedora.yaml
new file mode 100644
index 0000000..8e1bbba
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/tasks/Fedora.yaml
@@ -0,0 +1,7 @@
+---
+- name: Download repo file(s)
+ get_url:
+ url: "{{ obs_repofile_url }}"
+ dest: "/etc/yum.repos.d/home:CZ-NIC:{{ item }}.repo"
+ mode: 0644
+ with_items: "{{ repos }}"
diff --git a/distro/tests/ansible-roles/obs_repos/tasks/Ubuntu.yaml b/distro/tests/ansible-roles/obs_repos/tasks/Ubuntu.yaml
new file mode 100644
index 0000000..6b778ac
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/tasks/Ubuntu.yaml
@@ -0,0 +1,13 @@
+---
+- name: Add upstream package signing key
+ apt_key:
+ url: https://gitlab.nic.cz/knot/knot-resolver-release/raw/master/cznic-obs.gpg.asc
+ state: present
+
+- name: Add OBS repo(s)
+ apt_repository:
+ repo: >
+ deb http://download.opensuse.org/repositories/home:/CZ-NIC:/{{ item }}/{{ obs_repo_version }}/ /
+ state: present
+ update_cache: true
+ with_items: "{{ repos }}"
diff --git a/distro/tests/ansible-roles/obs_repos/tasks/main.yaml b/distro/tests/ansible-roles/obs_repos/tasks/main.yaml
new file mode 100644
index 0000000..4f17e87
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/tasks/main.yaml
@@ -0,0 +1,11 @@
+---
+- name: Include Debian specific vars
+ include_vars: "{{ obs_distro }}_{{ ansible_distribution_major_version }}.yaml"
+ when: obs_distro == "Debian"
+
+- name: Include distribution specific vars
+ include_vars: "{{ obs_distro }}.yaml"
+ when: obs_distro != "Debian"
+
+- name: Configure upstream reporitories
+ include: "{{ obs_distro }}.yaml"
diff --git a/distro/tests/ansible-roles/obs_repos/tasks/openSUSE_Leap.yaml b/distro/tests/ansible-roles/obs_repos/tasks/openSUSE_Leap.yaml
new file mode 100644
index 0000000..907f29d
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/tasks/openSUSE_Leap.yaml
@@ -0,0 +1,17 @@
+---
+- name: Install python-xml dependency for zypper_repository
+ shell: zypper install -y python-xml
+ args:
+ warn: false
+
+- name: Add upstream repo(s)
+ zypper_repository:
+ repo: "{{ obs_repofile_url }}"
+ state: present
+ disable_gpg_check: true # auto_import_keys is broken
+ with_items: "{{ repos }}"
+
+- name: Refresh all repositories
+ zypper_repository:
+ repo: '*'
+ runrefresh: true
diff --git a/distro/tests/ansible-roles/obs_repos/vars/CentOS.yaml b/distro/tests/ansible-roles/obs_repos/vars/CentOS.yaml
new file mode 100644
index 0000000..bc75374
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/vars/CentOS.yaml
@@ -0,0 +1,2 @@
+---
+obs_repo_version: "{{ obs_distro }}_{{ ansible_distribution_major_version }}_EPEL"
diff --git a/distro/tests/ansible-roles/obs_repos/vars/Debian_10.yaml b/distro/tests/ansible-roles/obs_repos/vars/Debian_10.yaml
new file mode 100644
index 0000000..bbe23e4
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/vars/Debian_10.yaml
@@ -0,0 +1,2 @@
+---
+obs_repo_version: "{{ obs_distro }}_{{ ansible_distribution_major_version }}"
diff --git a/distro/tests/ansible-roles/obs_repos/vars/Debian_9.yaml b/distro/tests/ansible-roles/obs_repos/vars/Debian_9.yaml
new file mode 100644
index 0000000..085f126
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/vars/Debian_9.yaml
@@ -0,0 +1,2 @@
+---
+obs_repo_version: "{{ obs_distro }}_{{ ansible_distribution_major_version }}.0"
diff --git a/distro/tests/ansible-roles/obs_repos/vars/Fedora.yaml b/distro/tests/ansible-roles/obs_repos/vars/Fedora.yaml
new file mode 100644
index 0000000..bbe23e4
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/vars/Fedora.yaml
@@ -0,0 +1,2 @@
+---
+obs_repo_version: "{{ obs_distro }}_{{ ansible_distribution_major_version }}"
diff --git a/distro/tests/ansible-roles/obs_repos/vars/Ubuntu.yaml b/distro/tests/ansible-roles/obs_repos/vars/Ubuntu.yaml
new file mode 100644
index 0000000..93e92b0
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/vars/Ubuntu.yaml
@@ -0,0 +1,2 @@
+---
+obs_repo_version: "x{{ obs_distro }}_{{ ansible_distribution_version }}"
diff --git a/distro/tests/ansible-roles/obs_repos/vars/openSUSE_Leap.yaml b/distro/tests/ansible-roles/obs_repos/vars/openSUSE_Leap.yaml
new file mode 100644
index 0000000..fc650cc
--- /dev/null
+++ b/distro/tests/ansible-roles/obs_repos/vars/openSUSE_Leap.yaml
@@ -0,0 +1,2 @@
+---
+obs_repo_version: "{{ obs_distro }}_{{ ansible_distribution_version }}"
diff --git a/distro/tests/centos7/Vagrantfile b/distro/tests/centos7/Vagrantfile
new file mode 100644
index 0000000..f51caa0
--- /dev/null
+++ b/distro/tests/centos7/Vagrantfile
@@ -0,0 +1,29 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "centos/7"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "centos7_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python2"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/centos7/ansible.cfg b/distro/tests/centos7/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/centos7/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/centos8/Vagrantfile b/distro/tests/centos8/Vagrantfile
new file mode 100644
index 0000000..3b666b2
--- /dev/null
+++ b/distro/tests/centos8/Vagrantfile
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "centos/8"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "centos8_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/libexec/platform-python"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/centos8/ansible.cfg b/distro/tests/centos8/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/centos8/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/debian10/Vagrantfile b/distro/tests/debian10/Vagrantfile
new file mode 100644
index 0000000..6398e7c
--- /dev/null
+++ b/distro/tests/debian10/Vagrantfile
@@ -0,0 +1,27 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ # debian/buster64 requires manual intervention for apt update as of 2019-07-18
+ config.vm.box = "generic/debian10"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "debian10_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/debian10/ansible.cfg b/distro/tests/debian10/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/debian10/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/debian9/Vagrantfile b/distro/tests/debian9/Vagrantfile
new file mode 100644
index 0000000..2457491
--- /dev/null
+++ b/distro/tests/debian9/Vagrantfile
@@ -0,0 +1,26 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "debian/stretch64"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "debian9_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/debian9/ansible.cfg b/distro/tests/debian9/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/debian9/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/fedora32/Vagrantfile b/distro/tests/fedora32/Vagrantfile
new file mode 100644
index 0000000..248164c
--- /dev/null
+++ b/distro/tests/fedora32/Vagrantfile
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "fedora/32-cloud-base"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "fedora32_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python3",
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/fedora32/ansible.cfg b/distro/tests/fedora32/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/fedora32/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/fedora33/Vagrantfile b/distro/tests/fedora33/Vagrantfile
new file mode 100644
index 0000000..0644b44
--- /dev/null
+++ b/distro/tests/fedora33/Vagrantfile
@@ -0,0 +1,29 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "fedora/33-cloud-base"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "fedora33_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python3"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/fedora33/ansible.cfg b/distro/tests/fedora33/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/fedora33/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/knot-dns-pkgtest.yaml b/distro/tests/knot-dns-pkgtest.yaml
new file mode 100644
index 0000000..ffddcca
--- /dev/null
+++ b/distro/tests/knot-dns-pkgtest.yaml
@@ -0,0 +1,12 @@
+---
+- hosts: all
+
+ remote_user: root
+ become: true
+
+ vars_files:
+ - repos.yaml
+
+ roles:
+ - obs_repos
+ - knot_dns
diff --git a/distro/tests/leap15/Vagrantfile b/distro/tests/leap15/Vagrantfile
new file mode 100644
index 0000000..fee36fb
--- /dev/null
+++ b/distro/tests/leap15/Vagrantfile
@@ -0,0 +1,28 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "generic/opensuse15"
+
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "leap15_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ libvirt.disk_bus = "sata"
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/leap15/ansible.cfg b/distro/tests/leap15/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/leap15/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/repos.yaml b/distro/tests/repos.yaml
new file mode 100644
index 0000000..ca4b13b
--- /dev/null
+++ b/distro/tests/repos.yaml
@@ -0,0 +1,2 @@
+repos:
+ - knot-dns-devel
diff --git a/distro/tests/test-distro.sh b/distro/tests/test-distro.sh
new file mode 100755
index 0000000..6728829
--- /dev/null
+++ b/distro/tests/test-distro.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -x
+
+# ./test-distro.sh {obs_repo} {distro}
+# Example usage: ./test-distro.sh knot-dns-devel debian9
+
+pkgtestdir="$(dirname ${0})"
+repofile="$pkgtestdir/repos.yaml"
+
+repo=$1
+distro=$2
+
+# Select repos
+echo -e "repos:\n - $repo" > $repofile
+
+pushd "$pkgtestdir/$distro"
+vagrant destroy -f &>/dev/null
+vagrant up
+ret=$?
+vagrant destroy -f &>/dev/null
+popd
+exit $ret
diff --git a/distro/tests/ubuntu1604/Vagrantfile b/distro/tests/ubuntu1604/Vagrantfile
new file mode 100644
index 0000000..d95d223
--- /dev/null
+++ b/distro/tests/ubuntu1604/Vagrantfile
@@ -0,0 +1,29 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "generic/ubuntu1604"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "ubuntu1604_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python3"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/ubuntu1604/ansible.cfg b/distro/tests/ubuntu1604/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/ubuntu1604/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/ubuntu1804/Vagrantfile b/distro/tests/ubuntu1804/Vagrantfile
new file mode 100644
index 0000000..08c6d5a
--- /dev/null
+++ b/distro/tests/ubuntu1804/Vagrantfile
@@ -0,0 +1,29 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "generic/ubuntu1804"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "ubuntu1804_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python3"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/ubuntu1804/ansible.cfg b/distro/tests/ubuntu1804/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/ubuntu1804/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/ubuntu2004/Vagrantfile b/distro/tests/ubuntu2004/Vagrantfile
new file mode 100644
index 0000000..c23a814
--- /dev/null
+++ b/distro/tests/ubuntu2004/Vagrantfile
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ config.vm.box = "generic/ubuntu2004"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "ubuntu2004_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python3"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/ubuntu2004/ansible.cfg b/distro/tests/ubuntu2004/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/ubuntu2004/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug
diff --git a/distro/tests/ubuntu2010/Vagrantfile b/distro/tests/ubuntu2010/Vagrantfile
new file mode 100644
index 0000000..6f816f2
--- /dev/null
+++ b/distro/tests/ubuntu2010/Vagrantfile
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+
+Vagrant.configure(2) do |config|
+
+ # TODO: switch to generic/ubuntu2010 when available (has libvirt box)
+ config.vm.box = "ubuntu/groovy64"
+ config.vm.synced_folder ".", "/vagrant", disabled: true
+
+ config.vm.define "ubuntu2010_knot-dns" do |machine|
+ machine.vm.provision "ansible" do |ansible|
+ ansible.playbook = "../knot-dns-pkgtest.yaml"
+ ansible.extra_vars = {
+ ansible_python_interpreter: "/usr/bin/python3"
+ }
+ end
+ end
+
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 1
+ libvirt.memory = 1024
+ end
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.cpus = 1
+ vbox.memory = 1024
+ end
+
+end
diff --git a/distro/tests/ubuntu2010/ansible.cfg b/distro/tests/ubuntu2010/ansible.cfg
new file mode 100644
index 0000000..b3b37ea
--- /dev/null
+++ b/distro/tests/ubuntu2010/ansible.cfg
@@ -0,0 +1,6 @@
+[defaults]
+
+# additional paths to search for roles in, colon separated
+roles_path = ../ansible-roles
+interpreter_python = auto
+stdout_callback=debug