Launch Goss test file with Ansible.
Copy the goss.py
file into your Ansible library
directory. That's it!
Validate a Goss test file (the test file must be on the remote machine):
- name: test goss file
goss:
path: "/path/to/file.yml"
If a test fails, the module returns an error.
If you want to ignore this error, add ignore_errors: yes
on the task.
You can change the output format with the format
option:
- name: test goss file
goss:
path: "/path/to/file.yml"
format: json
See all the supported output format: https://github.com/aelsabbahy/goss#supported-output-formats
You can also save the output of the goss
command in a file with the output_file
option:
- name: test goss file
goss:
path: "/path/to/file.yml"
format: json
output_file : /my/output/file.json
We use this module for testing/validation purposes.
Therefore, this module always returns changed = false
, even with the output_file
option.
Tested with :
- Ansible 1.8.2
- Ansible 2.0.2
- Ansible 2.2.2
module: goss
author: Mathieu Corbin
short_description: Launch goss (https://github.com/aelsabbahy/goss) tests
description:
- Launch goss tests.
This module always returns `changed = false` for idempotence.
options:
path:
required: true
description:
- Test file to validate.
The test file must be on the remote machine.
goss_path:
required: false
description:
- Path location for the goss executable.
Default is "goss" (ie.`no absolute path, goss executable must be available in $PATH).
format:
required: false
description:
- Output goss format.
Goss format list : goss v --format => [documentation json junit nagios nagios_verbose rspecish tap silent].
Default is "rspecish".
output_file:
required: false
description:
- Save the result of the goss command in a file whose path is output_file
examples:
- name: run goss against the gossfile /path/to/file.yml
goss:
path: "/path/to/file.yml"
- name: run goss against the gossfile /path/to/file.yml with nagios output
goss:
path: "/path/to/file.yml"
format: "nagios"
- name: run /usr/local/bin/goss against the gossfile /path/to/file.yml
goss:
path: "/path/to/file.yml"
goss_path: "/usr/local/bin/goss"
- name: run goss against multiple gossfiles and write the result in JSON format to /my/output/ for each file
goss:
path: "{{ item }}"
format: json
output_file : /my/output/{{ item }}
with_items: "{{ goss_files }}"