Tags: ansible-community/ara
Tags
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 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 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 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 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 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 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 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
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
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.
PreviousNext