From 5710f590ee344b0cd938c1660fa7989f09122dd4 Mon Sep 17 00:00:00 2001 From: Jeff Geerling Date: Fri, 28 Sep 2018 15:57:53 -0500 Subject: [PATCH] Switch tests to use Molecule and bump to Kibana 6.x. --- .gitignore | 4 +-- .travis.yml | 27 +++++++++++++------ README.md | 4 +-- defaults/main.yml | 2 +- meta/main.yml | 12 ++++++--- molecule/default/molecule.yml | 27 +++++++++++++++++++ .../test.yml => molecule/default/playbook.yml | 10 ++++--- {tests => molecule/default}/requirements.yml | 0 molecule/default/tests/test_default.py | 14 ++++++++++ molecule/default/yaml-lint.yml | 6 +++++ tests/README.md | 11 -------- 11 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 molecule/default/molecule.yml rename tests/test.yml => molecule/default/playbook.yml (50%) rename {tests => molecule/default}/requirements.yml (100%) create mode 100644 molecule/default/tests/test_default.py create mode 100644 molecule/default/yaml-lint.yml delete mode 100644 tests/README.md diff --git a/.gitignore b/.gitignore index 647e1f5..f56f5b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -files/logstash-forwarder* *.retry -tests/test.sh +*/__pycache__ +*.pyc diff --git a/.travis.yml b/.travis.yml index fb046f5..5f6f86e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,29 @@ --- +language: python services: docker env: - - distro: centos7 - - distro: ubuntu1604 - - distro: ubuntu1404 + global: + - ROLE_NAME: logstash + matrix: + - MOLECULE_DISTRO: centos7 + MOLECULE_DOCKER_COMMAND: /usr/lib/systemd/systemd + - MOLECULE_DISTRO: ubuntu1604 + - MOLECULE_DISTRO: ubuntu1404 -script: - # Download test shim. - - wget -O ${PWD}/tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/ - - chmod +x ${PWD}/tests/test.sh +install: + # Install test dependencies. + - pip install molecule docker + +before_script: + # Use actual Ansible Galaxy role name for the project directory. + - cd ../ + - mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME + - cd geerlingguy.$ROLE_NAME +script: # Run tests. - - ${PWD}/tests/test.sh + - molecule test notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/README.md b/README.md index 9df54b9..9d5bbf6 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ Note that filebeat and logstash may not work correctly with self-signed certific Whether configuration for local syslog file (defined as `logstash_local_syslog_path`) should be added to logstash. Set this to `false` if you are monitoring the local syslog differently, or if you don't care about the local syslog file. Other local logs can be added by your own configuration files placed inside `/etc/logstash/conf.d`. - logstash_enabled_on_boot: yes + logstash_enabled_on_boot: true -Set this to `no` if you don't want logstash to run on system startup. +Set this to `false` if you don't want logstash to run on system startup. logstash_install_plugins: - logstash-input-beats diff --git a/defaults/main.yml b/defaults/main.yml index 532d627..ab1e35a 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -11,7 +11,7 @@ logstash_ssl_dir: /etc/pki/logstash logstash_ssl_certificate_file: "" logstash_ssl_key_file: "" -logstash_enabled_on_boot: yes +logstash_enabled_on_boot: true logstash_install_plugins: - logstash-input-beats diff --git a/meta/main.yml b/meta/main.yml index 7c150f8..a823b46 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -10,15 +10,19 @@ galaxy_info: platforms: - name: EL versions: - - 6 - - 7 + - 6 + - 7 - name: Debian versions: - - all + - all - name: Ubuntu versions: - - all + - all galaxy_tags: - web - system - monitoring + - logging + - logs + - elk + - logstash diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml new file mode 100644 index 0000000..0339702 --- /dev/null +++ b/molecule/default/molecule.yml @@ -0,0 +1,27 @@ +--- +dependency: + name: galaxy +driver: + name: docker +lint: + name: yamllint + options: + config-file: molecule/default/yaml-lint.yml +platforms: + - name: instance + image: geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible + command: ${MOLECULE_DOCKER_COMMAND:-"sleep infinity"} + privileged: true + pre_build_image: true +provisioner: + name: ansible + lint: + name: ansible-lint + playbooks: + converge: ${MOLECULE_PLAYBOOK:-playbook.yml} +scenario: + name: default +verifier: + name: testinfra + lint: + name: flake8 diff --git a/tests/test.yml b/molecule/default/playbook.yml similarity index 50% rename from tests/test.yml rename to molecule/default/playbook.yml index 046fb8f..d0f6496 100644 --- a/tests/test.yml +++ b/molecule/default/playbook.yml @@ -1,15 +1,17 @@ --- -- hosts: all +- name: Converge + hosts: all + become: true vars: - logstash_enabled_on_boot: no + logstash_enabled_on_boot: false pre_tasks: - name: Update apt cache. - apt: update_cache=yes cache_valid_time=600 + apt: update_cache=true cache_valid_time=600 when: ansible_os_family == 'Debian' roles: - geerlingguy.java - geerlingguy.elasticsearch - - role_under_test + - geerlingguy.logstash diff --git a/tests/requirements.yml b/molecule/default/requirements.yml similarity index 100% rename from tests/requirements.yml rename to molecule/default/requirements.yml diff --git a/molecule/default/tests/test_default.py b/molecule/default/tests/test_default.py new file mode 100644 index 0000000..eedd64a --- /dev/null +++ b/molecule/default/tests/test_default.py @@ -0,0 +1,14 @@ +import os + +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') + + +def test_hosts_file(host): + f = host.file('/etc/hosts') + + assert f.exists + assert f.user == 'root' + assert f.group == 'root' diff --git a/molecule/default/yaml-lint.yml b/molecule/default/yaml-lint.yml new file mode 100644 index 0000000..a3dbc38 --- /dev/null +++ b/molecule/default/yaml-lint.yml @@ -0,0 +1,6 @@ +--- +extends: default +rules: + line-length: + max: 120 + level: warning diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index 6fb2117..0000000 --- a/tests/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Ansible Role tests - -To run the test playbook(s) in this directory: - - 1. Install and start Docker. - 1. Download the test shim (see .travis.yml file for the URL) into `tests/test.sh`: - - `wget -O tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/` - 1. Make the test shim executable: `chmod +x tests/test.sh`. - 1. Run (from the role root directory) `distro=[distro] playbook=[playbook] ./tests/test.sh` - -If you don't want the container to be automatically deleted after the test playbook is run, add the following environment variables: `cleanup=false container_id=$(date +%s)`