From 318e65372392ee904e1bee9bca458c7afcc244a7 Mon Sep 17 00:00:00 2001 From: Robert de Bock Date: Tue, 16 Oct 2018 20:07:56 +0200 Subject: [PATCH] Ansible Fest 2018 goodness. --- .travis.yml | 52 ++++++++++++++++++++- README.md | 11 +++++ defaults/main.yml | 3 ++ meta/main.yml | 1 - molecule/alpine-edge/Dockerfile.j2 | 2 - molecule/alpine-edge/molecule.yml | 1 + molecule/alpine-latest/Dockerfile.j2 | 2 - molecule/alpine-latest/molecule.yml | 1 + molecule/archlinux/Dockerfile.j2 | 4 ++ molecule/centos-6/Dockerfile.j2 | 4 ++ molecule/centos-latest/Dockerfile.j2 | 4 ++ molecule/debian-latest/Dockerfile.j2 | 4 ++ molecule/debian-stable/Dockerfile.j2 | 4 ++ molecule/debian-unstable/Dockerfile.j2 | 4 ++ molecule/default/Dockerfile.j2 | 7 +++ molecule/default/molecule.yml | 50 ++++++++++++++++++++ molecule/default/playbook.yml | 12 +++++ molecule/default/tests/test_default.yml | 7 +++ molecule/default/verify.yml | 53 ++++++++++++++++++++++ molecule/fedora-latest/Dockerfile.j2 | 4 ++ molecule/opensuse-leap/Dockerfile.j2 | 4 ++ molecule/opensuse-tumbleweed/Dockerfile.j2 | 4 ++ molecule/ubuntu-artful/Dockerfile.j2 | 4 ++ molecule/ubuntu-devel/Dockerfile.j2 | 4 ++ molecule/ubuntu-latest/Dockerfile.j2 | 4 ++ tasks/main.yml | 14 +++--- 26 files changed, 250 insertions(+), 14 deletions(-) create mode 100644 molecule/default/Dockerfile.j2 create mode 100644 molecule/default/molecule.yml create mode 100644 molecule/default/playbook.yml create mode 100644 molecule/default/tests/test_default.yml create mode 100644 molecule/default/verify.yml diff --git a/.travis.yml b/.travis.yml index a13a9e7..9aea4de 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,70 +7,120 @@ env: - version=">=2.4,<2.5" distro="alpine-latest" - version=">=2.5,<2.6" distro="alpine-latest" - version=">=2.6,<2.7" distro="alpine-latest" + - version=">=2.7,<2.8" distro="alpine-latest" + - version="devel" distro="alpine-latest" - version=">=2.4,<2.5" distro="alpine-edge" - version=">=2.5,<2.6" distro="alpine-edge" - version=">=2.6,<2.7" distro="alpine-edge" + - version=">=2.7,<2.8" distro="alpine-edge" + - version="devel" distro="alpine-edge" - version=">=2.4,<2.5" distro="archlinux" expectation="fail" - version=">=2.5,<2.6" distro="archlinux" expectation="fail" - version=">=2.6,<2.7" distro="archlinux" expectation="fail" + - version=">=2.7,<2.8" distro="archlinux" expectation="fail" + - version="devel" distro="archlinux" expectation="fail" - version=">=2.4,<2.5" distro="centos-6" - version=">=2.5,<2.6" distro="centos-6" - version=">=2.6,<2.7" distro="centos-6" + - version=">=2.7,<2.8" distro="centos-6" + - version="devel" distro="centos-6" - version=">=2.4,<2.5" distro="centos-latest" - version=">=2.5,<2.6" distro="centos-latest" - version=">=2.6,<2.7" distro="centos-latest" + - version=">=2.7,<2.8" distro="centos-latest" + - version="devel" distro="centos-latest" - version=">=2.4,<2.5" distro="debian-latest" - version=">=2.5,<2.6" distro="debian-latest" - version=">=2.6,<2.7" distro="debian-latest" + - version=">=2.7,<2.8" distro="debian-latest" + - version="devel" distro="debian-latest" - version=">=2.4,<2.5" distro="debian-stable" - version=">=2.5,<2.6" distro="debian-stable" - version=">=2.6,<2.7" distro="debian-stable" + - version=">=2.7,<2.8" distro="debian-stable" + - version="devel" distro="debian-stable" - version=">=2.4,<2.5" distro="debian-unstable" - version=">=2.5,<2.6" distro="debian-unstable" - version=">=2.6,<2.7" distro="debian-unstable" + - version=">=2.7,<2.8" distro="debian-unstable" + - version="devel" distro="debian-unstable" - version=">=2.4,<2.5" distro="fedora-latest" - version=">=2.5,<2.6" distro="fedora-latest" - version=">=2.6,<2.7" distro="fedora-latest" + - version=">=2.7,<2.8" distro="fedora-latest" + - version="devel" distro="fedora-latest" - version=">=2.4,<2.5" distro="fedora-rawhide" - version=">=2.5,<2.6" distro="fedora-rawhide" - version=">=2.6,<2.7" distro="fedora-rawhide" + - version=">=2.7,<2.8" distro="fedora-rawhide" + - version="devel" distro="fedora-rawhide" - version=">=2.4,<2.5" distro="opensuse-leap" - version=">=2.5,<2.6" distro="opensuse-leap" - version=">=2.6,<2.7" distro="opensuse-leap" + - version=">=2.7,<2.8" distro="opensuse-leap" + - version="devel" distro="opensuse-leap" - version=">=2.4,<2.5" distro="opensuse-tumbleweed" - version=">=2.5,<2.6" distro="opensuse-tumbleweed" - version=">=2.6,<2.7" distro="opensuse-tumbleweed" + - version=">=2.7,<2.8" distro="opensuse-tumbleweed" + - version="devel" distro="opensuse-tumbleweed" - version=">=2.4,<2.5" distro="ubuntu-artful" - version=">=2.5,<2.6" distro="ubuntu-artful" - version=">=2.6,<2.7" distro="ubuntu-artful" + - version=">=2.7,<2.8" distro="ubuntu-artful" + - version="devel" distro="ubuntu-artful" - version=">=2.4,<2.5" distro="ubuntu-latest" - version=">=2.5,<2.6" distro="ubuntu-latest" - version=">=2.6,<2.7" distro="ubuntu-latest" + - version=">=2.7,<2.8" distro="ubuntu-latest" + - version="devel" distro="ubuntu-latest" - version=">=2.4,<2.5" distro="ubuntu-devel" - version=">=2.5,<2.6" distro="ubuntu-devel" - version=">=2.6,<2.7" distro="ubuntu-devel" + - version=">=2.7,<2.8" distro="ubuntu-devel" + - version="devel" distro="ubuntu-devel" matrix: allow_failures: - env: version=">=2.4,<2.5" distro="alpine-edge" - env: version=">=2.5,<2.6" distro="alpine-edge" - env: version=">=2.6,<2.7" distro="alpine-edge" + - env: version=">=2.7,<2.8" distro="alpine-edge" + - env: version="devel" distro="alpine-edge" + - env: version="devel" distro="alpine-latest" + - env: version="devel" distro="archlinux" expectation="fail" + - env: version="devel" distro="centos-6" + - env: version="devel" distro="centos-latest" + - env: version="devel" distro="debian-latest" + - env: version="devel" distro="debian-stable" - env: version=">=2.4,<2.5" distro="debian-unstable" - env: version=">=2.5,<2.6" distro="debian-unstable" - env: version=">=2.6,<2.7" distro="debian-unstable" + - env: version=">=2.7,<2.8" distro="debian-unstable" + - env: version="devel" distro="debian-unstable" + - env: version="devel" distro="fedora-latest" - env: version=">=2.4,<2.5" distro="fedora-rawhide" - env: version=">=2.5,<2.6" distro="fedora-rawhide" - env: version=">=2.6,<2.7" distro="fedora-rawhide" + - env: version=">=2.7,<2.8" distro="fedora-rawhide" + - env: version="devel" distro="fedora-rawhide" + - env: version="devel" distro="opensuse-leap" + - env: version="devel" distro="opensuse-tumbleweed" + - env: version="devel" distro="ubuntu-artful" - env: version=">=2.4,<2.5" distro="ubuntu-devel" - env: version=">=2.5,<2.6" distro="ubuntu-devel" - env: version=">=2.6,<2.7" distro="ubuntu-devel" + - env: version=">=2.7,<2.8" distro="ubuntu-devel" + - env: version="devel" distro="ubuntu-devel" + - env: version="devel" distro="ubuntu-latest" cache: - pip install: - pip install --upgrade pip - - pip install ansible"${version}" + - if [ "${version}" != "devel" ] ; then pip install ansible"${version}" ; fi + - if [ "${version}" = "devel" ] ; then pip install git+https://github.com/ansible/ansible.git@devel ; fi - pip install molecule - pip install docker diff --git a/README.md b/README.md index dae60df..2804060 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,17 @@ rsyslog Provides rsyslog for your system. +[Unit tests](https://travis-ci.org/robertdebock/ansible-role-rsyslog) are done on every commit and periodically. + +If you find issues, please register them in [GitHub](https://github.com/robertdebock/ansible-role-rsyslog/issues) + +To test this role locally please use [Molecule](https://github.com/metacloud/molecule): +``` +pip install molecule +molecule test +``` +There are many scenarios available, please have a look in the `molecule/` directory. + Context -------- This role is a part of many compatible roles. Have a look at [the documentation of these roles](https://robertdebock.nl/) for further information. diff --git a/defaults/main.yml b/defaults/main.yml index f9cfec7..f6a294b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -8,3 +8,6 @@ # the ipaddress of the receiving rsyslog server. # Not setting this variable will not forward logs. # rsyslog_remote: server1.example.com + +# To update all packages installed by this roles, set `rsyslog_package_state` to `latest`. +rsyslog_package_state: present diff --git a/meta/main.yml b/meta/main.yml index 6f2f09e..5ba74b9 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -5,7 +5,6 @@ galaxy_info: description: Provides rsyslog for your system. license: Apache License, Version 2.0 min_ansible_version: 2.4 - min_ansible_container_version: 0.2.0 platforms: - name: Alpine diff --git a/molecule/alpine-edge/Dockerfile.j2 b/molecule/alpine-edge/Dockerfile.j2 index e073adf..36166d6 100644 --- a/molecule/alpine-edge/Dockerfile.j2 +++ b/molecule/alpine-edge/Dockerfile.j2 @@ -5,5 +5,3 @@ FROM {{ item.registry.url }}/{{ item.image }} {% else %} FROM {{ item.image }} {% endif %} - -RUN apk add --no-cache bash diff --git a/molecule/alpine-edge/molecule.yml b/molecule/alpine-edge/molecule.yml index 1227557..251332f 100644 --- a/molecule/alpine-edge/molecule.yml +++ b/molecule/alpine-edge/molecule.yml @@ -10,6 +10,7 @@ lint: platforms: - name: rsyslog-alpine-edge image: alpine:edge + command: sh -c "while true ; do sleep 1 ; done" provisioner: name: ansible lint: diff --git a/molecule/alpine-latest/Dockerfile.j2 b/molecule/alpine-latest/Dockerfile.j2 index e073adf..36166d6 100644 --- a/molecule/alpine-latest/Dockerfile.j2 +++ b/molecule/alpine-latest/Dockerfile.j2 @@ -5,5 +5,3 @@ FROM {{ item.registry.url }}/{{ item.image }} {% else %} FROM {{ item.image }} {% endif %} - -RUN apk add --no-cache bash diff --git a/molecule/alpine-latest/molecule.yml b/molecule/alpine-latest/molecule.yml index 41c713d..aae7610 100644 --- a/molecule/alpine-latest/molecule.yml +++ b/molecule/alpine-latest/molecule.yml @@ -10,6 +10,7 @@ lint: platforms: - name: rsyslog-alpine-latest image: alpine:latest + command: sh -c "while true ; do sleep 1 ; done" provisioner: name: ansible lint: diff --git a/molecule/archlinux/Dockerfile.j2 b/molecule/archlinux/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/archlinux/Dockerfile.j2 +++ b/molecule/archlinux/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/centos-6/Dockerfile.j2 b/molecule/centos-6/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/centos-6/Dockerfile.j2 +++ b/molecule/centos-6/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/centos-latest/Dockerfile.j2 b/molecule/centos-latest/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/centos-latest/Dockerfile.j2 +++ b/molecule/centos-latest/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/debian-latest/Dockerfile.j2 b/molecule/debian-latest/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/debian-latest/Dockerfile.j2 +++ b/molecule/debian-latest/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/debian-stable/Dockerfile.j2 b/molecule/debian-stable/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/debian-stable/Dockerfile.j2 +++ b/molecule/debian-stable/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/debian-unstable/Dockerfile.j2 b/molecule/debian-unstable/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/debian-unstable/Dockerfile.j2 +++ b/molecule/debian-unstable/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/default/Dockerfile.j2 b/molecule/default/Dockerfile.j2 new file mode 100644 index 0000000..36166d6 --- /dev/null +++ b/molecule/default/Dockerfile.j2 @@ -0,0 +1,7 @@ +# Molecule managed + +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} +FROM {{ item.image }} +{% endif %} diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml new file mode 100644 index 0000000..56b6d5b --- /dev/null +++ b/molecule/default/molecule.yml @@ -0,0 +1,50 @@ +--- +dependency: + name: galaxy + options: + role-file: requirements.yml +driver: + name: docker +lint: + name: yamllint +platforms: + - name: rsyslog-alpine-edge + image: alpine:edge + command: sh -c "while true ; do sleep 1 ; done" + - name: rsyslog-alpine-latest + image: alpine:latest + command: sh -c "while true ; do sleep 1 ; done" + - name: rsyslog-archlinux + image: base/archlinux + - name: rsyslog-centos-6 + image: centos:6 + - name: rsyslog-centos-latest + image: centos:latest + - name: rsyslog-debian-latest + image: debian:latest + - name: rsyslog-debian-stable + image: debian:stable + - name: rsyslog-debian-unstable + image: debian:unstable + - name: rsyslog-fedora-latest + image: fedora:latest + - name: rsyslog-fedora-rawhide + image: fedora:rawhide + - name: rsyslog-opensuse-leap + image: opensuse:leap + - name: rsyslog-opensuse-tumbleweed + image: opensuse:tumbleweed + - name: rsyslog-ubuntu-artful + image: ubuntu:artful + - name: rsyslog-ubuntu-devel + image: ubuntu:devel +provisioner: + name: ansible + lint: + name: ansible-lint +scenario: + name: default +verifier: + name: goss + lint: + name: yamllint diff --git a/molecule/default/playbook.yml b/molecule/default/playbook.yml new file mode 100644 index 0000000..6767801 --- /dev/null +++ b/molecule/default/playbook.yml @@ -0,0 +1,12 @@ +--- +- name: Converge + hosts: all + gather_facts: false + become: true + + roles: + - role: ansible-role-bootstrap + + tasks: + - name: test connection + ping: diff --git a/molecule/default/tests/test_default.yml b/molecule/default/tests/test_default.yml new file mode 100644 index 0000000..865e875 --- /dev/null +++ b/molecule/default/tests/test_default.yml @@ -0,0 +1,7 @@ +# Molecule managed +--- +file: + /usr/bin/python: + exists: true + owner: root + group: root diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml new file mode 100644 index 0000000..77a24ea --- /dev/null +++ b/molecule/default/verify.yml @@ -0,0 +1,53 @@ +--- +# This is an example playbook to execute goss tests. +# Tests need distributed to the appropriate ansible host/groups +# prior to execution by `goss validate`. + +- name: Verify + hosts: all + become: true + vars: + goss_version: v0.3.2 + goss_arch: amd64 + goss_dst: /usr/local/bin/goss + goss_sha256sum: 2f6727375db2ea0f81bee36e2c5be78ab5ab8d5981f632f761b25e4003e190ec + goss_url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" + goss_test_directory: /tmp + goss_format: documentation + tasks: + - name: Download and install Goss + get_url: + url: "{{ goss_url }}" + dest: "{{ goss_dst }}" + sha256sum: "{{ goss_sha256sum }}" + mode: 0755 + register: download_goss + until: download_goss is succeeded + retries: 3 + + - name: Copy Goss tests to remote + copy: + src: "{{ item }}" + dest: "{{ goss_test_directory }}/{{ item | basename }}" + with_fileglob: + - "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}/test_*.yml" + + - name: Register test files + shell: "ls {{ goss_test_directory }}/test_*.yml" + register: test_files + + - name: Execute Goss tests + command: "{{ goss_dst }} -g {{ item }} validate --format {{ goss_format }}" + register: test_results + with_items: "{{ test_files.stdout_lines }}" + + - name: Display details about the Goss results + debug: + msg: "{{ item.stdout_lines }}" + with_items: "{{ test_results.results }}" + + - name: Fail when tests fail + fail: + msg: "Goss failed to validate" + when: item.rc != 0 + with_items: "{{ test_results.results }}" diff --git a/molecule/fedora-latest/Dockerfile.j2 b/molecule/fedora-latest/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/fedora-latest/Dockerfile.j2 +++ b/molecule/fedora-latest/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/opensuse-leap/Dockerfile.j2 b/molecule/opensuse-leap/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/opensuse-leap/Dockerfile.j2 +++ b/molecule/opensuse-leap/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/opensuse-tumbleweed/Dockerfile.j2 b/molecule/opensuse-tumbleweed/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/opensuse-tumbleweed/Dockerfile.j2 +++ b/molecule/opensuse-tumbleweed/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/ubuntu-artful/Dockerfile.j2 b/molecule/ubuntu-artful/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/ubuntu-artful/Dockerfile.j2 +++ b/molecule/ubuntu-artful/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/ubuntu-devel/Dockerfile.j2 b/molecule/ubuntu-devel/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/ubuntu-devel/Dockerfile.j2 +++ b/molecule/ubuntu-devel/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/molecule/ubuntu-latest/Dockerfile.j2 b/molecule/ubuntu-latest/Dockerfile.j2 index 299adf5..36166d6 100644 --- a/molecule/ubuntu-latest/Dockerfile.j2 +++ b/molecule/ubuntu-latest/Dockerfile.j2 @@ -1,3 +1,7 @@ # Molecule managed +{% if item.registry is defined %} +FROM {{ item.registry.url }}/{{ item.image }} +{% else %} FROM {{ item.image }} +{% endif %} diff --git a/tasks/main.yml b/tasks/main.yml index 8be1e31..2b519e1 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,18 +1,16 @@ --- # tasks file for rsyslog -- name: uninstall conflicting software +- name: uninstall conflicting systemd-logger package: name: systemd-logger state: absent -- name: install software +- name: install rsyslog package: - name: "{{ item }}" - state: present - with_items: - - "{{ rsyslog_packages }}" + name: "{{ rsyslog_packages }}" + state: "{{ rsyslog_package_state }}" -- name: configuring software +- name: configuring rsyslog template: src: rsyslog.conf.j2 dest: /etc/rsyslog.conf @@ -24,7 +22,7 @@ name: /etc/rsyslog.d/ state: directory -- name: start and enable software +- name: start and enable rsyslog service: name: "{{ rsyslog_service }}" state: started