Skip to content

Commit

Permalink
Merge pull request #91 from xgin/pdns-44
Browse files Browse the repository at this point in the history
Add PowerDNS 4.4
  • Loading branch information
pieterlexis authored Oct 17, 2020
2 parents aad6074 + 1f01ca4 commit f0ac78c
Show file tree
Hide file tree
Showing 5 changed files with 162 additions and 0 deletions.
9 changes: 9 additions & 0 deletions molecule/pdns-44/converge.yml
Original file line number Diff line number Diff line change
@@ -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 }
93 changes: 93 additions & 0 deletions molecule/pdns-44/molecule.yml
Original file line number Diff line number Diff line change
@@ -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
44 changes: 44 additions & 0 deletions molecule/resources/tests/repo-44/test_repo_44.py
Original file line number Diff line number Diff line change
@@ -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
7 changes: 7 additions & 0 deletions molecule/resources/vars/pdns-repo-44.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---

##
# PowerDNS 4.4.x Repository
##

pdns_install_repo: "{{ pdns_auth_powerdns_repo_44 }}"
9 changes: 9 additions & 0 deletions vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit f0ac78c

Please sign in to comment.