Ansible module for Goss
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
LICENSE
README.md
goss.py

README.md

ansible-goss

Launch Goss test file with Ansible.

Installation

Copy the goss.py file into your Ansible library directory. That's it!

Quick start

Simple example

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.

Output format and output file

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

Changed = False

We use this module for testing/validation purposes. Therefore, this module always returns changed = false, even with the output_file option.

Ansible versions

Tested with :

  • Ansible 1.8.2
  • Ansible 2.0.2
  • Ansible 2.2.2

Module documentation

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 }}"