From 1f01ca4b519cdba953cbf77891210a59d8c18920 Mon Sep 17 00:00:00 2001 From: Eugene Kazakov Date: Thu, 8 Oct 2020 16:25:22 +0200 Subject: [PATCH] Add PowerDNS 4.4, add tests for Ubuntu 20.04, remove tests for CentOS 6 --- molecule/pdns-44/converge.yml | 9 ++ molecule/pdns-44/molecule.yml | 93 +++++++++++++++++++ .../resources/tests/repo-44/test_repo_44.py | 44 +++++++++ molecule/resources/vars/pdns-repo-44.yml | 7 ++ vars/main.yml | 9 ++ 5 files changed, 162 insertions(+) create mode 100644 molecule/pdns-44/converge.yml create mode 100644 molecule/pdns-44/molecule.yml create mode 100644 molecule/resources/tests/repo-44/test_repo_44.py create mode 100644 molecule/resources/vars/pdns-repo-44.yml diff --git a/molecule/pdns-44/converge.yml b/molecule/pdns-44/converge.yml new file mode 100644 index 0000000..1b511c1 --- /dev/null +++ b/molecule/pdns-44/converge.yml @@ -0,0 +1,9 @@ +--- + +- hosts: pdns + vars_files: + - ../resources/vars/pdns-common.yml + - ../resources/vars/pdns-repo-44.yml + - ../resources/vars/pdns-backends.yml + roles: + - { role: pdns-ansible } diff --git a/molecule/pdns-44/molecule.yml b/molecule/pdns-44/molecule.yml new file mode 100644 index 0000000..73d8fdf --- /dev/null +++ b/molecule/pdns-44/molecule.yml @@ -0,0 +1,93 @@ +--- + +scenario: + name: pdns-44 + +driver: + name: docker + +dependency: + name: galaxy + +platforms: + - name: centos-7 + groups: ["pdns"] + image: centos:7 + dockerfile_tpl: centos-systemd + + - name: centos-8 + groups: ["pdns"] + image: centos:8 + dockerfile_tpl: centos-systemd + + - name: ubuntu-1804 + groups: ["pdns"] + image: ubuntu:18.04 + dockerfile_tpl: debian-systemd + + - name: ubuntu-2004 + groups: ["pdns"] + image: ubuntu:20.04 + dockerfile_tpl: debian-systemd + + - name: debian-9 + groups: ["pdns"] + image: debian:9 + dockerfile_tpl: debian-systemd + + - name: debian-10 + groups: ["pdns"] + image: debian:10 + dockerfile_tpl: debian-systemd + + # In order to run the tests we need + # a MySQL container to be up & running + - name: mysql + image: mysql:5.7 + env: + MYSQL_ROOT_PASSWORD: pdns + # Declaring the container as service, + # will link it to the others Platforms containers + # on creation. + is_service: yes + +provisioner: + name: ansible + options: + diff: True + v: True + config_options: + defaults: + gathering: smart + fact_caching: jsonfile + fact_caching_connection: .ansible_cache + fact_caching_timeout: 7200 + ssh_connection: + pipelining: true + inventory: + links: + host_vars: ../resources/host_vars/ + playbooks: + create: ../resources/create.yml + destroy: ../resources/destroy.yml + prepare: ../resources/prepare.yml + # "systemctl used in place of systemd module" "ANSIBLE0006" + # "Tasks that run when changed should likely be handlers" "ANSIBLE0016" + # "Shells that use pipes should set the pipefail option" "306" + lint: ansible-lint -x ANSIBLE0006 ANSIBLE0016 306 + +lint: yamllint defaults tasks meta vars + +verifier: + name: testinfra + options: + hosts: "pdns" + vvv: True + directory: ../resources/tests/all + additional_files_or_dirs: + # path relative to 'directory' + - ../repo-44/ + - ../backend-sqlite/ + - ../backend-mysql/ + - ../systemd-override/ + lint: flake8 diff --git a/molecule/resources/tests/repo-44/test_repo_44.py b/molecule/resources/tests/repo-44/test_repo_44.py new file mode 100644 index 0000000..6d5dac9 --- /dev/null +++ b/molecule/resources/tests/repo-44/test_repo_44.py @@ -0,0 +1,44 @@ + +debian_os = ['debian', 'ubuntu'] +rhel_os = ['redhat', 'centos'] + + +def test_repo_file(host): + f = None + if host.system_info.distribution.lower() in debian_os: + f = host.file('/etc/apt/sources.list.d/powerdns-auth-44.list') + if host.system_info.distribution.lower() in rhel_os: + f = host.file('/etc/yum.repos.d/powerdns-auth-44.repo') + + assert f.exists + assert f.user == 'root' + assert f.group == 'root' + + +def test_pdns_repo(host): + f = None + if host.system_info.distribution.lower() in debian_os: + f = host.file('/etc/apt/sources.list.d/powerdns-auth-44.list') + if host.system_info.distribution.lower() in rhel_os: + f = host.file('/etc/yum.repos.d/powerdns-auth-44.repo') + + assert f.exists + assert f.contains('auth-44') + + +def test_repo_pinning_file(host): + if host.system_info.distribution.lower() in debian_os: + f = host.file('/etc/apt/preferences.d/pdns') + assert f.exists + assert f.user == 'root' + assert f.group == 'root' + f.contains('Package: pdns-*') + f.contains('Pin: origin repo.powerdns.com') + f.contains('Pin-Priority: 600') + + +def test_pdns_version(host): + cmd = host.run('/usr/sbin/pdns_server --version') + + assert 'PowerDNS Authoritative Server' in cmd.stderr + assert '4.4' in cmd.stderr diff --git a/molecule/resources/vars/pdns-repo-44.yml b/molecule/resources/vars/pdns-repo-44.yml new file mode 100644 index 0000000..007c357 --- /dev/null +++ b/molecule/resources/vars/pdns-repo-44.yml @@ -0,0 +1,7 @@ +--- + +## +# PowerDNS 4.4.x Repository +## + +pdns_install_repo: "{{ pdns_auth_powerdns_repo_44 }}" diff --git a/vars/main.yml b/vars/main.yml index d4988e4..e8a1588 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -45,6 +45,15 @@ pdns_auth_powerdns_repo_43: yum_debug_symbols_repo_baseurl: "http://repo.powerdns.com/centos/$basearch/$releasever/auth-43/debug" name: "powerdns-auth-43" +pdns_auth_powerdns_repo_44: + apt_repo_origin: "repo.powerdns.com" + apt_repo: "deb [arch=amd64] http://repo.powerdns.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}-auth-44 main" + gpg_key: "http://repo.powerdns.com/FD380FBB-pub.asc" + gpg_key_id: "9FAAA5577E8FCF62093D036C1B0C6205FD380FBB" + yum_repo_baseurl: "http://repo.powerdns.com/centos/$basearch/$releasever/auth-44" + yum_debug_symbols_repo_baseurl: "http://repo.powerdns.com/centos/$basearch/$releasever/auth-44/debug" + name: "powerdns-auth-44" + default_pdns_service_overrides: >- {{ { 'User' : pdns_user , 'Group' : pdns_group