ansible_report

This plugin distributes a technique to run Ansible jobs from Rudder and reports their results.

Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments. This Rudder technique aims to integrate the execution and reporting of an Ansible agent in the Rudder one.

Basically, when assigning a directive declined from this technique to a node, it will:

  • Make sure the Ansible package is installed

  • Download a playbook from your Rudder Server to the node

  • Execute this playbook from the target node

  • Report back the execution to the Rudder Server

Installation

To install this plugin:

  • Run the command rudder package install-file <path-to-the-ansible-rpkg>

  • Modify the newly added technique ansible-report in the technique editor, by modifying the description.

  • On your server, run the following:

cd /var/rudder/rudder-configuration-repository
git add techniques/ansible_report
git commit -m "Adding ansible_report technique from the ansible-report plugin"
rudder server reload-techniques

You can now use the techniques under the Ansible-report category in your directive tree.

Usage

Make sure that the target node has SSH access to every Ansible targetted hosts. The technique takes two arguments:

  • PathPlaybookServer Relative path (relative to /var/rudder/configuration-repository/shared-files/) to the playbook that will be downloaded on your executioner.

  • PathPlaybookAgent Absolute path where to put the playbook on the node.

To trigger periodic playbooks execution you can use the Schedule Simple Stateless generic method.

There is also an Ansible plugin available to use the Rudder inventory, groups and node properties in your Ansible playbooks.

To get more information about it, see the dedicated documentation

Reference

Ansible playbooks can configure and orchestrate steps of any manual ordered process and they can launch tasks synchronously or asynchronously.

An example of a basic playbook to check the status of services and report the hostname of the target:

---
- name: run the playbook tasks on the localhost and check service status
  hosts: 127.0.0.1
  connection: local
  become:
  tasks:

  - name: print out the hostname of target
    command: hostname
  - name: checking service status
    command: systemctl status "{{ item }}"
    with_items:
    - apache2
    - sshd

At runtime, the technique will store the Ansible output in a local temporary file under /var/rudder/tmp/ansible_report. It will then be reported in a classic Rudder report to be available in the Rudder interface by using the generic method File report content. The execution is done through the Command execution result generic method to differentiate the repaired/kept cases. If the Ansible runner did make a change on the system, it will report a repaired, else, a kept report.

An example of Ansible runner output

PLAY [run the playbook tasks on the localhost and check service status] ********

TASK [setup] *******************************************************************
ok: [127.0.0.1]

TASK [print out the hostname of target] ****************************************
changed: [127.0.0.1]

TASK [checking service status] *************************************************
changed: [127.0.0.1] => (item=apache2)
changed: [127.0.0.1] => (item=sshd)

PLAY RECAP *********************************************************************
127.0.0.1                  : ok=3    changed=2    unreachable=0    failed=0

← Branding Plugin Node external reports →