From bf6776cc01865b8ba392fdbec18e28bf2a362b05 Mon Sep 17 00:00:00 2001 From: Samuli Silvius Date: Mon, 25 Mar 2019 18:46:24 +0200 Subject: Molecule tests for docker role Issue-ID: OOM-1759 Change-Id: I9e1ee7f248147b3f7229625c7a20fa84e8e67aac Signed-off-by: Samuli Silvius --- ansible/roles/docker/.yamllint | 11 +++++++ ansible/roles/docker/molecule/default/molecule.yml | 38 ++++++++++++++++++++++ ansible/roles/docker/molecule/default/playbook.yml | 5 +++ ansible/roles/docker/molecule/default/prepare.yml | 5 +++ .../docker/molecule/default/tests/test_default.py | 35 ++++++++++++++++++++ ansible/roles/docker/tasks/main.yml | 4 +-- 6 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 ansible/roles/docker/.yamllint create mode 100644 ansible/roles/docker/molecule/default/molecule.yml create mode 100644 ansible/roles/docker/molecule/default/playbook.yml create mode 100644 ansible/roles/docker/molecule/default/prepare.yml create mode 100644 ansible/roles/docker/molecule/default/tests/test_default.py (limited to 'ansible/roles/docker') diff --git a/ansible/roles/docker/.yamllint b/ansible/roles/docker/.yamllint new file mode 100644 index 00000000..e8e79a57 --- /dev/null +++ b/ansible/roles/docker/.yamllint @@ -0,0 +1,11 @@ +extends: default + +rules: + braces: + max-spaces-inside: 1 + level: error + brackets: + max-spaces-inside: 1 + level: error + line-length: disable +# truthy: disable diff --git a/ansible/roles/docker/molecule/default/molecule.yml b/ansible/roles/docker/molecule/default/molecule.yml new file mode 100644 index 00000000..9a87184f --- /dev/null +++ b/ansible/roles/docker/molecule/default/molecule.yml @@ -0,0 +1,38 @@ +--- +dependency: + name: galaxy +driver: + name: docker +lint: + name: yamllint +platforms: + - name: infrastructure-server + image: molecule-${PREBUILD_PLATFORM_DISTRO:-centos}:${PREBUILD_DISTRO_VERSION:-centos7.6} + pre_build_image: true + privileged: true + command: ${MOLECULE_DOCKER_COMMAND:-""} + groups: + - infrastructure + env: + container: docker + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro +provisioner: + name: ansible + lint: + name: ansible-lint + env: + ANSIBLE_ROLES_PATH: ../../../../test/roles + ANSIBLE_LIBRARY: ../../../../library + inventory: + host_vars: + infrastructure-server: + cluster_ip: 1.2.3.4 +verifier: + name: testinfra + options: + verbose: true + lint: + name: flake8 + options: + ignore: W291 # trailing whitespace diff --git a/ansible/roles/docker/molecule/default/playbook.yml b/ansible/roles/docker/molecule/default/playbook.yml new file mode 100644 index 00000000..7384ae27 --- /dev/null +++ b/ansible/roles/docker/molecule/default/playbook.yml @@ -0,0 +1,5 @@ +--- +- name: Converge + hosts: all + roles: + - role: docker diff --git a/ansible/roles/docker/molecule/default/prepare.yml b/ansible/roles/docker/molecule/default/prepare.yml new file mode 100644 index 00000000..8df759c9 --- /dev/null +++ b/ansible/roles/docker/molecule/default/prepare.yml @@ -0,0 +1,5 @@ +--- +- name: Prepare infra + hosts: all + roles: + - prepare-docker diff --git a/ansible/roles/docker/molecule/default/tests/test_default.py b/ansible/roles/docker/molecule/default/tests/test_default.py new file mode 100644 index 00000000..a8adeb65 --- /dev/null +++ b/ansible/roles/docker/molecule/default/tests/test_default.py @@ -0,0 +1,35 @@ +import os +import pytest + +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') + + +@pytest.mark.parametrize('svc', [ + 'docker' +]) +def test_service(host, svc): + service = host.service(svc) + + assert service.is_running + assert service.is_enabled + + +def test_docker_daemon_file(host): + f = host.file('/etc/docker/daemon.json') + + assert f.exists + assert f.user == 'root' + assert f.group == 'root' + assert f.content_string == """{ + "log-opts": { + "max-size": "100m", + "max-file": "3" + }, + "dns": [ + "1.2.3.4" + ], + "log-driver": "json-file" +}""" diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index de740df2..1925d09b 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -24,7 +24,7 @@ - name: Setup docker container logging settings json_mod: path: /etc/docker/daemon.json - key: '' # the whole JSON document per https://tools.ietf.org/html/rfc6901 + key: '' # the whole JSON document per https://tools.ietf.org/html/rfc6901 # "value" must be wrapped in single quote "'" with extra space in front of "{" (ansible workaround) # reference: https://stackoverflow.com/questions/31969872 value: ' { "log-driver": "json-file", "log-opts": { "max-size": "{{ docker.log_max_size }}", "max-file": "{{ docker.log_max_file }}" } }' @@ -46,4 +46,4 @@ systemd: name: docker state: started - enabled: yes + enabled: true -- cgit 1.2.3-korg