{"id":13586629,"url":"https://github.com/ansible-community/ara","last_synced_at":"2025-05-14T05:02:28.044Z","repository":{"id":37925177,"uuid":"60729995","full_name":"ansible-community/ara","owner":"ansible-community","description":"ARA Records Ansible and makes it easier to understand and troubleshoot.","archived":false,"fork":false,"pushed_at":"2025-04-25T00:46:02.000Z","size":38215,"stargazers_count":1921,"open_issues_count":127,"forks_count":178,"subscribers_count":64,"default_branch":"master","last_synced_at":"2025-05-09T12:40:18.468Z","etag":null,"topics":["ansible","api","ara","django","django-rest-framework","interface","python","reporting"],"latest_commit_sha":null,"homepage":"https://ara.recordsansible.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ansible-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-08T20:52:08.000Z","updated_at":"2025-05-07T13:57:57.000Z","dependencies_parsed_at":"2024-07-30T13:13:39.203Z","dependency_job_id":"fdf906a3-1446-4c6c-aed6-d6e195c6cf7a","html_url":"https://github.com/ansible-community/ara","commit_stats":{"total_commits":799,"total_committers":36,"mean_commits":"22.194444444444443","dds":0.5481852315394242,"last_synced_commit":"dde76744596b031f8a52297a71fee59ba9aeb605"},"previous_names":["openstack/ara"],"tags_count":137,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fara","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fara/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fara/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fara/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansible-community","download_url":"https://codeload.github.com/ansible-community/ara/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076379,"owners_count":22010607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","api","ara","django","django-rest-framework","interface","python","reporting"],"created_at":"2024-08-01T15:05:41.814Z","updated_at":"2025-05-14T05:02:27.982Z","avatar_url":"https://github.com/ansible-community.png","language":"Python","readme":"# ARA Records Ansible\n\nARA Records Ansible and makes it easier to understand and troubleshoot.\n\n![logo](doc/source/_static/ara-with-icon.png)\n\nIt is another recursive acronym with a focus on simplicity.\n\n## About ara\n\nara provides Ansible reporting by recording ``ansible`` and ``ansible-playbook`` commands regardless of how and where they run:\n\n- from most Linux distributions and even on Mac OS (as long as ``python \u003e= 3.8`` is available)\n- from tools that run Ansible like ansible-(pull|test|runner|navigator), AWX \u0026 Automation Controller (Tower), Molecule and Semaphore\n- from a terminal, a script or by hand\n- from a laptop, desktop, server, virtual machine, container or execution environment\n- from CI/CD platforms such as Jenkins, Rundeck and Zuul\n- from git forges like GitHub, GitLab, Gitea \u0026 Forgejo\n\nThe recorded results are available via an included CLI, a REST API as well as a self-hosted, local-first web reporting interface.\n\n\u003c!-- https://github.com/ansible-community/ara/blob/master/doc/source/_static/demo.mp4 --\u003e\nhttps://github.com/ansible-community/ara/assets/1291204/4fbdf5f7-509c-46ea-beb0-726b43e1b985\n\n## How it works\n\nARA Records Ansible results to SQLite, MySQL and PostgreSQL databases with a standard [callback plugin](https://docs.ansible.com/ansible/latest/plugins/callback.html).\n\nThis plugin gathers data as Ansible runs and sends it to a Django REST API server:\n\n![recording-workflow](doc/source/_static/graphs/recording-workflow.png)\n\n## Requirements\n\n- Any recent Linux distribution or Mac OS with python \u003e=3.8 available\n- The ara package (containing the Ansible plugins) must be installed for the same python interpreter as Ansible itself\n\n## Getting started\n\nFor production use, consider learning about [best practices](https://ara.readthedocs.io/en/latest/troubleshooting.html#improving-playbook-recording-performance), [enabling authentication](https://ara.readthedocs.io/en/latest/api-security.html#authentication) and [ignoring what doesn't need to be recorded](https://ara.readthedocs.io/en/latest/ansible-plugins-and-use-cases.html#ansible-plugins).\n\n### Recording playbooks without an API server\n\nara records to a local sqlite database by default and does not require a persistent server:\n\n```bash\n# Install ansible (or ansible-core) with ara (including API server dependencies)\npython3 -m pip install --user ansible \"ara[server]\"\n\n# Configure Ansible to enable ara\nexport ANSIBLE_CALLBACK_PLUGINS=\"$(python3 -m ara.setup.callback_plugins)\"\n\n# Run an Ansible playbook as usual\nansible-playbook playbook.yml\n\n# Check out the CLI\nara playbook list\nara host list\n\n# or the UI at http://127.0.0.1:8000\nara-manage runserver\n```\n\n![getting-started](doc/source/_static/getting-started.gif)\n\n### Recording playbooks with an API server\n\nThe server includes a REST API as well a web reporting interface.\n\nConsider running one to aggregate playbook runs from different tools, jobs or servers into a single dashboard that can be shared with friends.\n\nGet started with the [ara_api role](https://github.com/ansible-community/ara-collection/blob/master/roles/ara_api/README.md)\nor with the [container images](https://ara.readthedocs.io/en/latest/container-images.html) published by the project on\n[DockerHub](https://hub.docker.com/r/recordsansible/ara-api) and [quay.io](https://quay.io/repository/recordsansible/ara-api):\n\n```bash\n# Create a directory for a volume to store settings and a sqlite database\nmkdir -p ~/.ara/server\n\n# Start an API server with docker from the image on DockerHub:\ndocker run --name ara-api --detach --tty \\\n  --volume ~/.ara/server:/opt/ara -p 8000:8000 \\\n  docker.io/recordsansible/ara-api:latest\n\n# or with podman from the image on quay.io:\npodman run --name ara-api --detach --tty \\\n  --volume ~/.ara/server:/opt/ara -p 8000:8000 \\\n  quay.io/recordsansible/ara-api:latest\n```\n\nOnce the server is running, ara must be installed and configured to send data to it:\n\n```bash\n# Install ansible (or ansible-core) with ara (excluding API server dependencies)\npython3 -m pip install --user ansible ara\n\n# Configure Ansible to enable ara\nexport ANSIBLE_CALLBACK_PLUGINS=\"$(python3 -m ara.setup.callback_plugins)\"\n\n# Set up the ara callback to know where the API server is located\nexport ARA_API_CLIENT=\"http\"\nexport ARA_API_SERVER=\"http://127.0.0.1:8000\"\n\n# Run an Ansible playbook as usual\nansible-playbook playbook.yml\n\n# Check out the CLI\nara playbook list\nara host list\n\n# Or browse http://127.0.0.1:8000 (running from the container)\n```\n\n## Live demo\n\nA live demo is deployed with the ara Ansible collection from [Ansible Galaxy](https://galaxy.ansible.com/recordsansible/ara).\n\nIt is available at https://demo.recordsansible.org.\n\n## Documentation and changelog\n\nDocumentation for installing, configuring, running and using ara is available on [ara.readthedocs.io](https://ara.readthedocs.io).\n\nCommon issues may be resolved by reading the [troubleshooting guide](https://ara.readthedocs.io/en/latest/troubleshooting.html).\n\nChangelog and release notes are available within the repository's [git tags](https://github.com/ansible-community/ara/tags) as well as the [documentation](https://ara.readthedocs.io/en/latest/changelog-release-notes.html).\n\n## Community and getting help\n\n- Bugs, issues and enhancements: https://github.com/ansible-community/ara/issues\n- IRC: #ara on [Libera.chat](https://web.libera.chat/?channels=#ara)\n- Matrix: Bridged from IRC via [#ara:libera.chat](https://matrix.to/#/#ara:libera.chat)\n- Slack: Bridged from IRC via [https://arecordsansible.slack.com](https://join.slack.com/t/arecordsansible/shared_invite/enQtMjMxNzI4ODAxMDQxLTU2NTU3YjMwYzRlYmRkZTVjZTFiOWIxNjE5NGRhMDQ3ZTgzZmQyZTY2NzY5YmZmNDA5ZWY4YTY1Y2Y1ODBmNzc\u003e)\n- Website and blog: https://ara.recordsansible.org\n- ~~Twitter: https://twitter.com/recordsansible~~\n- Mastodon: https://fosstodon.org/@ara\n\n## Contributing\n\nContributions to the project are welcome and appreciated !\n\nGet started with the [contributor's documentation](https://ara.readthedocs.io/en/latest/contributing.html).\n\n## Authors\n\nCode contributions to the project can be viewed from the git log or on [GitHub](https://github.com/ansible-community/ara/graphs/contributors).\n\nThe ara parrot logo was designed and contributed by [Jason E. Rist](https://github.com/ansible-community/ara/commit/0d5d0939a6b7a319d99acc1fb20d4ca282bd76ab).\n\n## Copyright\n\n```\nCopyright (c) 2023 The ARA Records Ansible authors\n\nARA Records Ansible is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nARA Records Ansible is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with ARA Records Ansible.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n```\n","funding_links":[],"categories":["Python","Tools","django"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansible-community%2Fara","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansible-community%2Fara","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansible-community%2Fara/lists"}