cookiecutter-ansible-role/{{cookiecutter.app_name}}_role/molecule/default/verify.yml

60 lines
2.4 KiB
YAML
Raw Normal View History

2020-04-28 13:23:10 +02:00
---
# 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 {{ cookiecutter.app_name | replace('_',' ') }}
hosts:
- {{ cookiecutter.app_name }}
become: true
vars:
2020-12-28 11:32:26 +01:00
goss_version: v0.3.16
2020-04-28 13:23:10 +02:00
goss_arch: amd64
goss_dst: /usr/local/bin/goss
2020-12-28 11:32:26 +01:00
goss_sha256sum: 827e354b48f93bce933f5efcd1f00dc82569c42a179cf2d384b040d8a80bfbfb
2020-04-28 13:23:10 +02:00
goss_url: "https://github.com/aelsabbahy/goss/releases/download/{% raw %}{{{% endraw %} goss_version {% raw %}}}{% endraw %}/goss-linux-{% raw %}{{{% endraw %} goss_arch {% raw %}}}{% endraw %}"
goss_test_directory: /tmp
goss_format: documentation
vars_files:
- ../../defaults/main.yml
tasks:
- name: Download and install Goss
get_url:
url: "{% raw %}{{{% endraw %} goss_url {% raw %}}}{% endraw %}"
dest: "{% raw %}{{{% endraw %} goss_dst {% raw %}}}{% endraw %}"
sha256sum: "{% raw %}{{{% endraw %} goss_sha256sum {% raw %}}}{% endraw %}"
mode: 0755
register: download_goss
until: download_goss is succeeded
retries: 3
- name: Copy Goss tests to remote
template:
src: "{% raw %}{{{% endraw %} item {% raw %}}}{% endraw %}"
dest: "{% raw %}{{{% endraw %} goss_test_directory {% raw %}}}{% endraw %}/{% raw %}{{{% endraw %} item | basename {% raw %}}}{% endraw %}"
with_fileglob:
- "tests/test_*.yml"
- name: Register test files
shell: "ls {% raw %}{{{% endraw %} goss_test_directory {% raw %}}}{% endraw %}/test_*.yml"
register: test_files
- name: Execute Goss tests
command: "{% raw %}{{{% endraw %} goss_dst {% raw %}}}{% endraw %} -g {% raw %}{{{% endraw %} item {% raw %}}}{% endraw %} validate --format {% raw %}{{{% endraw %} goss_format {% raw %}}}{% endraw %}"
register: test_results
with_items: "{% raw %}{{{% endraw %} test_files.stdout_lines {% raw %}}}{% endraw %}"
ignore_errors: true
2020-04-28 13:23:10 +02:00
- name: Display details about the Goss results
debug:
msg: "{% raw %}{{{% endraw %} item.stdout_lines {% raw %}}}{% endraw %}"
with_items: "{% raw %}{{{% endraw %} test_results.results {% raw %}}}{% endraw %}"
- name: Fail when tests fail
fail:
msg: "Goss failed to validate"
when: item.rc != 0
2020-11-11 16:51:24 +01:00
with_items: "{% raw %}{{{% endraw %} test_results.results {% raw %}}}{% endraw %}"