Skip to content

Tags: ansible-community/ara

Tags

1.8.0

Toggle 1.8.0's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.8.0

1.8.0 introduces a MCP server for AI agents, adds a Prometheus exporter
with a Grafana dashboard and significantly improves server performance
with new database indexes and query optimization.

Changes since 1.7.5:
https://codeberg.org/ansible-community/ara/compare/1.7.5...1.8.0

MCP server
----------

ara 1.8.0 is the first version with an optional, standalone MCP
(Model Context Protocol) server. This allows AI agents to interact with
ARA's recorded data using specialized tools, reducing token usage and
improving troubleshooting efficiency.

It is designed to be simple and read only to give LLMs quick access to
detailed playbook results over the ara API.

The MCP server does not ship in the ara package on purpose: run it out of
the ``contrib`` source repository:
https://codeberg.org/ansible-community/ara/src/branch/master/contrib/mcp

Monitoring and Observability
----------------------------

A new Prometheus exporter is now available from the `ara prometheus` CLI to
track and alert on Ansible metrics recorded by ara.
This includes a pre-configured Grafana dashboard to visualize playbook
execution trends and performance.

Documentation on how to use them and how they work is available:
https://ara.readthedocs.io/en/latest/prometheus.html

Server performance
------------------

Significant performance improvements are landing in ara 1.8.0:
- new database indexes to hot query paths (like status and timestamps)
- resolved N+1 query issues, notably on the playbook list
- optimized expensive queries using django's prefetch_related and avoiding
  unnecessary usages of distinct

There is still work to do but the web interface as well as the API should
already feel much faster and responsive in general, especially for big
playbooks or large instances.

Packaging
---------

Django 4.2 is now unsupported and the minimum version has been bumped to
Django 5.2, resulting in the minimum python version to be 3.10 up from 3.8.

Container images
----------------

Project container images have been updated to use Fedora 44 and
Alma 10 as base images.

Additionally, gunicorn was tuned to use worker threads to improve concurrency
performance:
``python3 -m gunicorn --workers=4 --threads=4 --worker-class gthread --access-logfile - --bind 0.0.0.0:8000 ara.server.wsgi'``

Users should feel free to tune these numbers by specifying a custom command to
the containers according to their host and workload.

UI
--

- Fixed an issue with task pagination when viewing a single host's results
- Added the full ara logo to "About" and information on supporting the project

Regular expressions for IGNORED_FILES
-------------------------------------

ara records playbook and role files by default while allowing filters via
ARA_IGNORED_FILES. This filtering has historically been done by supplying a
list of strings for matching:

ARA_IGNORED_FILES=vault.yaml,vault.yml

Supplying the "regex:" prefix now allows the use of flexible patterns:

ARA_IGNORED_FILES=regex:vault.ya?ml

Upgrade notes
-------------

Update the version of ara and restart the server if one is running.
The version of ara used to record playbooks should be the same one as the server.

A new SQL migration adds several indexes to improve database performance.
As always, take a backup of the database and run ``ara-manage migrate``
after updating ara where the server runs from.

The minimum version of python is now 3.10, up from 3.8.

1.8.0rc1

Toggle 1.8.0rc1's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.8.0rc1

1.8.0 introduces a MCP server for AI agents, adds a Prometheus exporter
with a Grafana dashboard and significantly improves server performance
with new database indexes and query optimization.

This is the first release candidate.

Changes since 1.7.5:
https://codeberg.org/ansible-community/ara/compare/1.7.5...1.8.0rc1

MCP server
----------

ara 1.8.0 is the first version with an optional, standalone MCP
(Model Context Protocol) server. This allows AI agents to interact with
ARA's recorded data using specialized tools, reducing token usage and
improving troubleshooting efficiency.

It is designed to be simple and read only to give LLMs quick access to
detailed playbook results over the ara API.

The MCP server does not ship in the ara package on purpose: run it out of
the ``contrib`` source repository:
https://codeberg.org/ansible-community/ara/src/branch/master/contrib/mcp

Monitoring and Observability
----------------------------

A new Prometheus exporter is now available from the `ara prometheus` CLI to
track and alert on Ansible metrics recorded by ara.
This includes a pre-configured Grafana dashboard to visualize playbook
execution trends and performance.

Documentation on how to use them and how they work is available:
https://ara.readthedocs.io/en/latest/prometheus.html

Server performance
------------------

Significant performance improvements are landing in ara 1.8.0:
- new database indexes to hot query paths (like status and timestamps)
- resolved N+1 query issues, notably on the playbook list
- optimized expensive queries using django's prefetch_related and avoiding
  unnecessary usages of distinct

There is still work to do but the web interface as well as the API should
already feel much faster and responsive in general, especially for big
playbooks or large instances.

Packaging
---------

Django 4.2 is now unsupported and the minimum version has been bumped to
Django 5.2, resulting in the minimum python version to be 3.10 up from 3.8.

Container images
----------------

Project container images have been updated to use Fedora 44 and
Alma 10 as base images.

Additionally, gunicorn was tuned to use worker threads to improve concurrency
performance:
``python3 -m gunicorn --workers=4 --threads=4 --worker-class gthread --access-logfile - --bind 0.0.0.0:8000 ara.server.wsgi'``

Users should feel free to tune these numbers by specifying a custom command to
the containers according to their host and workload.

UI
--

- Fixed an issue with task pagination when viewing a single host's results
- Added the full ara logo to "About" and information on supporting the project

Regular expressions for IGNORED_FILES
-------------------------------------

ara records playbook and role files by default while allowing filters via
ARA_IGNORED_FILES. This filtering has historically been done by supplying a
list of strings for matching:

ARA_IGNORED_FILES=vault.yaml,vault.yml

Supplying the "regex:" prefix now allows the use of flexible patterns:

ARA_IGNORED_FILES=regex:vault.ya?ml

Upgrade notes
-------------

Update the version of ara and restart the server if one is running.
The version of ara used to record playbooks should be the same one as the server.

A new SQL migration adds several indexes to improve database performance.
As always, take a backup of the database and run ``ara-manage migrate``
after updating ara where the server runs from.

The minimum version of python is now 3.10, up from 3.8.

1.7.5

Toggle 1.7.5's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.5

1.7.5 fixes an issue with database migrations, modernizes its python
installation and includes native support for Ansible deprecations,
warnings and exceptions.

Changes since 1.7.4:
https://codeberg.org/ansible-community/ara/compare/1.7.4...1.7.5

Ansible deprecations, warnings, exceptions
------------------------------------------

ansible-core 2.19 introduced deprecations, warnings and exceptions directly
in the task results recorded by ara.
When recording new playbooks, ara 1.7.5 extracts them from the task results
and attaches them to the tasks directly.

Exposed under /api/v1/tasks, they are also available in the UI under a new
column called "notes" when browsing playbook results.

Database
--------

ara 1.7.4 introduced database migrations to address Django 5.2 support with
MySQL/MariaDB.

The migration wasn't scoped explicitly to the MySQL backend and caused issues
with PostgreSQL.

This is now fixed.

Packaging
---------

ara historically used OpenStack's pbr with a setup.py and setup.cfg for
packaging, installation and versioning.

Since then, pyproject.toml has emerged as the modern way to package
python software.

With special thanks to Adrien Banlin (sohorx), ara has completed migration
to pyproject.toml.

Upgrade notes
-------------

The version of ara used to record playbooks should be the same one as the
server. Update the version of ara and restart the server if one is running.

Then, SQL migrations must be run to fix an issue introduced in 1.7.4 and in
order to add support for recording deprecations, warnings and exceptions.

As always, take a backup of the database and run ``ara-manage migrate`` after
updating ara where the server runs from.

ara 1.7.5 is expected to be the last version to support python3.8.

1.7.5rc2

Toggle 1.7.5rc2's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.5rc2

1.7.5 fixes an issue with database migrations, modernizes its python installation and includes native support for Ansible deprecations, warnings and exceptions.
This is the second release candidate that includes a pin to workaround an issue with django-health-check.

Changes since 1.7.4: https://codeberg.org/ansible-community/ara/compare/1.7.4...1.7.5rc1

Ansible deprecations, warnings, exceptions
------------------------------------------

ansible-core 2.19 introduced deprecations, warnings and exceptions directly in the task results recorded by ara.
When recording new playbooks, ara 1.7.5 extracts them from the task results and attaches them to the tasks directly.

Exposed under /api/v1/tasks, they are also available in the UI under a new column called "notes" when browsing playbook results.

Database
--------

ara 1.7.4 introduced database migrations to address Django 5.2 support with MySQL/MariaDB.
The migration wasn't scoped explicitly to the MySQL backend and caused issues with PostgreSQL.
This is now fixed.

Packaging
---------

ara historically used OpenStack's pbr with a setup.py and setup.cfg for packaging, installation and versioning.
Since then, pyproject.toml has emerged as the modern way to package python software.

With special thanks to Adrien Banlin (sohorx), ara has completed migration to pyproject.toml.

Upgrade notes
-------------

The version of ara used to record playbooks should be the same one as the server.
Update the version of ara and restart the server if one is running.

Then, SQL migrations must be run to fix an issue introduced in 1.7.4 and in order to add support for recording deprecations, warnings and exceptions.
As always, take a backup of the database and run ``ara-manage migrate`` after updating ara where the server runs from.

ara 1.7.5 is expected to be the last version to support python3.8.

1.7.5rc1

Toggle 1.7.5rc1's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.5rc1

1.7.5 fixes an issue with database migrations, modernizes its python installation and includes native support for Ansible deprecations, warnings and exceptions.
This is the first release candidate.

Changes since 1.7.4: https://codeberg.org/ansible-community/ara/compare/1.7.4...1.7.5rc1

Ansible deprecations, warnings, exceptions
------------------------------------------

ansible-core 2.19 introduced deprecations, warnings and exceptions directly in the task results recorded by ara.
When recording new playbooks, ara 1.7.5 extracts them from the task results and attaches them to the tasks directly.

Exposed under /api/v1/tasks, they are also available in the UI under a new column called "notes" when browsing playbook results.

Database
--------

ara 1.7.4 introduced database migrations to address Django 5.2 support with MySQL/MariaDB.
The migration wasn't scoped explicitly to the MySQL backend and caused issues with PostgreSQL.
This is now fixed.

Packaging
---------

ara historically used OpenStack's pbr with a setup.py and setup.cfg for packaging, installation and versioning.
Since then, pyproject.toml has emerged as the modern way to package python software.

With special thanks to Adrien Banlin (sohorx), ara has completed migration to pyproject.toml.

Upgrade notes
-------------

The version of ara used to record playbooks should be the same one as the server.
Update the version of ara and restart the server if one is running.

Then, SQL migrations must be run to fix an issue introduced in 1.7.4 and in order to add support for recording deprecations, warnings and exceptions.
As always, take a backup of the database and run ``ara-manage migrate`` after updating ara where the server runs from.

ara 1.7.5 is expected to be the last version to support python3.8.

1.7.4

Toggle 1.7.4's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.4

1.7.4 is a feature release for ara's web UI and includes a fix for using Django 5.2.x with MariaDB.

Changes since 1.7.3: https://codeberg.org/ansible-community/ara/compare/1.7.3...1.7.4

Server
------
Django 5.0 changed how uuid fields (for plays and tasks) are managed with MariaDB.
The models have been updated and a new migration was added accordingly. See upgrade notes.

UI
---
- Loading or refreshing a page using the light theme should no longer flicker
- The playbook header at the top of a playbook report has been redesigned for clarity and mobile responsiveness
- The hosts, files and records sections have received similar treatment
- The recorded files are now displayed inside a file hierarchy browser
- When ``gather_facts: true``, ara will now display a dashboard including (but not limited to):
  - load average, memory and disk usage
  - uptime, OS, kernel and python version
  - network interfaces
- It is still possible to access the raw host facts and a search box has been added

Client
-------
- Include the HTTP error code when logging about an API error

Container images
-------------
- Bumped fedora images to 43

Tests
--------
- Maintenance for ansible-core 2.19/2.10 compatibility
  For ara's own tests, written in ansible. ara already worked with 2.19 and 2.20.
- Bumped tests up to fedora-43, debian-13 and ansible-core 2.20
- Improved how codeberg CI results are sent to demo.recordsansible.org

Upgrade notes
------------------
Update the version of ara and restart the server if one is running.

Then, a new SQL migration takes care of the compatibility for Django 5.2 with MariaDB.
As always, take a backup of the database and run ``ara-manage migrate`` after updating ara where the server runs from.

It is largely no-op and runs quickly, even on large databases.

ara 1.7.4 is expected to be the last version to support python3.8.

1.7.4rc1

Toggle 1.7.4rc1's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.4rc1

1.7.4 is a feature release for ara's web UI and includes a fix for using Django 5.2.x with MariaDB.
This is the first release candidate.

Changes since 1.7.3: https://codeberg.org/ansible-community/ara/compare/1.7.3...1.7.4rc1

Server
------
Django 5.0 changed how uuid fields (for plays and tasks) are managed with MariaDB.
The models have been updated and a new migration was added accordingly. See upgrade notes.

UI
---
- Loading or refreshing a page using the light theme should no longer flicker
- The playbook header at the top of a playbook report has been redesigned for clarity and mobile responsiveness
- The hosts, files and records sections have received similar treatment
- The recorded files are now displayed inside a file hierarchy browser
- When ``gather_facts: true``, ara will now display a dashboard including (but not limited to):
  - load average, memory and disk usage
  - uptime, OS, kernel and python version
  - network interfaces
- It is still possible to access the raw host facts and a search box has been added

Client
-------
- Include the HTTP error code when logging about an API error

Container images
-------------
- Bumped fedora images to 43

Tests
--------
- Maintenance for ansible-core 2.19/2.10 compatibility
  For ara's own tests, written in ansible. ara already worked with 2.19 and 2.20.
- Bumped tests up to fedora-43, debian-13 and ansible-core 2.20
- Improved how codeberg CI results are sent to demo.recordsansible.org

Upgrade notes
------------------
Update the version of ara and restart the server if one is running.

Then, a new SQL migration takes care of the compatibility for Django 5.2 with MariaDB.
As always, take a backup of the database and run ``ara-manage migrate`` after updating ara where the server runs from.

It is largely no-op and runs quickly, even on large databases.

ara 1.7.4 is expected to be the last version to support python3.8.

1.7.3

Toggle 1.7.3's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.3

1.7.3 is a maintenance release which adds a few new features.

It includes minor changes as a result of the project migration from
GitHub to Codeberg.

The source repository now lives at:
https://codeberg.org/ansible-community/ara

The repository on GitHub remains as a mirror for now.

Changes since 1.7.2:

Server
------

- Added tzdata/zoneinfo to server requirements for compatibility across versions of python and django
- Bumped the minimum version of django LTS from 3.2 to 4.2 (up to 5.2)

UI
--

- Added an auto refresh arrow at the top right, allowing automatic refreshes of the pages at the selected duration
- Clicking on the number of hosts for a playbook on the playbooks page should now correctly display the results
  for each host of that playbook

API client
----------

- Avoid using ARA_API_USERNAME and ARA_API_PASSWORD if they are set to
  empty values

Callback
--------

- Added support for specifying 'all' to ARA_IGNORED_FACTS to prevent ara from recording any host facts

New action plugin: ara_label
----------------------------

This new module provides the ability to manipulate ara's labels on playbooks.
Excerpt from the documentation:

```
- name: Add a static label to this playbook (the one that is running)
  # Note: By default Ansible will run this task on every host.
  # Consider the use case and declare 'run_once: true' when there is no need to
  # run this task more than once.
  # This might sound obvious but it avoids updating the same labels 100 times
  # if there are 100 hosts, incurring a performance penalty needlessly.
  run_once: true
  ara_label:
    state: present
    labels:
      - state:running

- name: Add dynamically templated labels to this playbook
  ara_label:
    state: present
    labels:
      - "git:{{ lookup('git -C {{ playbook_dir }} rev-parse HEAD') }}"
      - "os:{{ ansible_distribution }}-{{ ansible_distribution_version }}"

- name: Add labels to a specific playbook
  ara_label:
    state: present
    playbook_id: 1
    labels:
      - state:deployed

- name: Remove labels from the running playbook (if they exist)
  ara_label:
    state: absent
    labels:
      - state:running
```

Maintenance
-----------

- Completed migration from GitHub to Codeberg (links, CI jobs, etc.)
- Bumped CI and container images to Fedora 41
- Bumped CI to the latest versions of ansible (11) and ansible-core (2.18)

Docs
----

- Stop using sphinx's get_html_theme_path since it's been deprecated
- Updated contributor documentation to mention Codeberg
- Included a high level overview of how CI jobs work and what they do

Upgrade Notes
-------------

- There are no known migrations, deprecations or backwards-incompatible changes in this release.
- ara 1.7.3 is expected to be the last release supporting python3.8.

1.7.3rc3

Toggle 1.7.3rc3's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.3rc3

This is the third release candidate for the 1.7.3 stable release of ara.

1.7.3 is a maintenance release which adds a few new features.

Changes since 1.7.2:

Server
------

- Added tzdata/zoneinfo to server requirements for compatibility across versions of python and django
- Bumped the minimum version of django from 3.2 to 4.2 (up to 5.2)

UI
--

- Added an auto refresh arrow at the top right, allowing automatic refreshes of the pages at the selected duration
- Clicking on the number of hosts for a playbook on the playbooks page should now correctly display the results
  for each host of that playbook

API client
----------

- Avoid using ARA_API_USERNAME and ARA_API_PASSWORD if they are set to
  empty values

Callback
--------

- Added support for specifying 'all' to ARA_IGNORED_FACTS to prevent ara from recording any host facts

New action plugin: ara_label
----------------------------

This new module provides the ability to manipulate ara's labels on playbooks.
Excerpt from the documentation:
```

- name: Add a static label to this playbook (the one that is running)
  # Note: By default Ansible will run this task on every host.
  # Consider the use case and declare 'run_once: true' when there is no need to
  # run this task more than once.
  # This might sound obvious but it avoids updating the same labels 100 times
  # if there are 100 hosts, incurring a performance penalty needlessly.
  run_once: true
  ara_label:
    state: present
    labels:
      - state:running

- name: Add dynamically templated labels to this playbook
  ara_label:
    state: present
    labels:
      - "git:{{ lookup('git -C {{ playbook_dir }} rev-parse HEAD') }}"
      - "os:{{ ansible_distribution }}-{{ ansible_distribution_version }}"

- name: Add labels to a specific playbook
  ara_label:
    state: present
    playbook_id: 1
    labels:
      - state:deployed

- name: Remove labels from the running playbook (if they exist)
  ara_label:
    state: absent
    labels:
      - state:running
```

Maintenance
-----------

- Completed migration from GitHub to Codeberg (links, CI jobs, etc.)
- Bumped CI and container images to Fedora 41
- Bumped CI to the latest versions of ansible (11) and ansible-core (2.18)
- Docs: Stop using deprecated usage of get_html_theme_path

Docs
----

- Updated contributor documentation to mention Codeberg
- Included a high level overview of how CI jobs work and what they do

Upgrade Notes
-------------

- There are no known migrations, deprecations or backwards-incompatible changes in this release.

1.7.3rc2

Toggle 1.7.3rc2's commit message

Verified

This tag was signed with the committer’s verified signature.
dmsimard David Moreau Simard
1.7.3rc2

This is the second release candidate for the 1.7.3 stable release of ara.

1.7.3 is a maintenance release which adds a few new features.

Changes since 1.7.2:

Server
------

- Added tzdata to django server requirements
- Bumped the minimum version of django from 3.2 to 4.2 (up to 5.2)

UI
--

- Added an auto refresh arrow at the top right, allowing automatic refreshes of the pages at the selected duration
- Clicking on the number of hosts for a playbook on the playbooks page should now correctly display the results
  for each host of that playbook

API client
----------

- Avoid using ARA_API_USERNAME and ARA_API_PASSWORD if they are set to
  empty values

Callback
--------

- Added support for specifying 'all' to ARA_IGNORED_FACTS to prevent ara from recording any host facts

New action plugin: ara_label
----------------------------

This new module provides the ability to manipulate ara's labels on playbooks.
Excerpt from the documentation:
```

- name: Add a static label to this playbook (the one that is running)
  # Note: By default Ansible will run this task on every host.
  # Consider the use case and declare 'run_once: true' when there is no need to
  # run this task more than once.
  # This might sound obvious but it avoids updating the same labels 100 times
  # if there are 100 hosts, incurring a performance penalty needlessly.
  run_once: true
  ara_label:
    state: present
    labels:
      - state:running

- name: Add dynamically templated labels to this playbook
  ara_label:
    state: present
    labels:
      - "git:{{ lookup('git -C {{ playbook_dir }} rev-parse HEAD') }}"
      - "os:{{ ansible_distribution }}-{{ ansible_distribution_version }}"

- name: Add labels to a specific playbook
  ara_label:
    state: present
    playbook_id: 1
    labels:
      - state:deployed

- name: Remove labels from the running playbook (if they exist)
  ara_label:
    state: absent
    labels:
      - state:running
```

Maintenance
-----------

- Completed migration from GitHub to Codeberg (links, CI jobs, etc.)
- Bumped CI and container images to Fedora 41
- Bumped CI to the latest versions of ansible (11) and ansible-core (2.18)
- Docs: Stop using deprecated usage of get_html_theme_path

Docs
----

- Updated contributor documentation to mention Codeberg
- Included a high level overview of how CI jobs work and what they do

Upgrade Notes
-------------

- There are no known migrations, deprecations or backwards-incompatible changes in this release.