{"id":16012020,"url":"https://github.com/redhat-cop/infra.aap_configuration","last_synced_at":"2026-01-16T21:35:11.200Z","repository":{"id":36960161,"uuid":"205022847","full_name":"redhat-cop/infra.aap_configuration","owner":"redhat-cop","description":"A collection of roles to manage Ansible Automation Platform 2.5+ with code","archived":false,"fork":false,"pushed_at":"2026-01-12T14:31:30.000Z","size":7025,"stargazers_count":343,"open_issues_count":26,"forks_count":180,"subscribers_count":38,"default_branch":"devel","last_synced_at":"2026-01-12T21:12:31.277Z","etag":null,"topics":["ansible","ansible-automation-platform","ansible-controller","ansible-tower","automation","automation-controller","automation-cop","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://galaxy.ansible.com/infra/aap_configuration","language":"YAML","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/redhat-cop.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-08-28T21:02:16.000Z","updated_at":"2026-01-12T14:31:35.000Z","dependencies_parsed_at":"2023-10-14T22:21:25.842Z","dependency_job_id":"12b743d5-cfa1-417f-81df-9626200ad271","html_url":"https://github.com/redhat-cop/infra.aap_configuration","commit_stats":null,"previous_names":["redhat-cop/infra.aap_configuration"],"tags_count":88,"template":false,"template_full_name":null,"purl":"pkg:github/redhat-cop/infra.aap_configuration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.aap_configuration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.aap_configuration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.aap_configuration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.aap_configuration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redhat-cop","download_url":"https://codeload.github.com/redhat-cop/infra.aap_configuration/tar.gz/refs/heads/devel","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.aap_configuration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28483327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","ansible-automation-platform","ansible-controller","ansible-tower","automation","automation-controller","automation-cop","hacktoberfest"],"created_at":"2024-10-08T14:01:31.396Z","updated_at":"2026-01-16T21:35:11.187Z","avatar_url":"https://github.com/redhat-cop.png","language":"YAML","funding_links":[],"categories":["YAML"],"sub_categories":[],"readme":"# Red Hat Communities of Practice AAP Configuration Collection\n\n[![pre-commit tests](https://github.com/redhat-cop/infra.aap_configuration/actions/workflows/pre-commit.yml/badge.svg)](https://github.com/redhat-cop/infra.aap_configuration/actions/workflows/pre-commit.yml)\n[![Release - Automated](https://github.com/redhat-cop/infra.aap_configuration/actions/workflows/release_auto.yml/badge.svg)](https://github.com/redhat-cop/infra.aap_configuration/actions/workflows/release_auto.yml)\n\u003c!-- markdownlint-disable-line MD033 MD034 --\u003e\u003ca href=\"https://raw.githubusercontent.com/redhat-cop/infra.aap_configuration/devel/docs/aap_config_as_code_public_meeting.ics\"\u003e\u003cimg border=\"0\" alt=\"Google Calendar invite\" width=\"60\" src=\"https://ssl.gstatic.com/calendar/images/dynamiclogo_2020q4/calendar_20_2x.png\"\u003e\u003c/a\u003e\n\u003c!-- Further CI badges go here as above --\u003e\n\nThis Ansible collection allows for easy interaction with AAP 2.5+ via Ansible roles using the modules from the certified collections.\n\n## Getting Started\n\n**New to this collection?** Check out our [Getting Started Guide](https://github.com/redhat-cop/infra.aap_configuration/blob/devel/docs/GETTING_STARTED.md) for a step-by-step introduction to using the `dispatch` role and configuring your AAP environment.\n\n## Getting Help\n\nWe are on the Ansible Forums and Matrix, if you want to discuss something, ask for help, or participate in the community, please use the #infra-config-as-code tag on the form, or post to the chat in Matrix.\n\n[Ansible Forums](https://forum.ansible.com/tag/infra-config-as-code)\n\n[Matrix Chat Room](https://matrix.to/#/#aap_config_as_code:ansible.com)\n\n## Requirements\n\nThe supported collections that contains the modules are required for this collection to work, you can copy this requirements.yml file example.\n\n```yaml\n---\ncollections:\n  - name: ansible.platform\n  - name: ansible.hub\n  - name: ansible.controller\n    version: \"\u003e=4.6.0\"\n  - name: ansible.eda\n  - name: infra.aap_configuration\n...\n```\n\n## Links to Ansible Automation Platform Collections\n\n|                                      Collection Name                                |            Purpose            |\n|:-----------------------------------------------------------------------------------:|:-----------------------------:|\n| [ansible.platform repo](https://github.com/ansible/ansible.platform)                | gateway/platform modules      |\n| [ansible.hub repo](https://github.com/ansible-collections/ansible_hub)              | Automation hub modules        |\n| [ansible.controller repo](https://github.com/ansible/awx/tree/devel/awx_collection) | Automation controller modules |\n| [ansible.eda repo](https://github.com/ansible/event-driven-ansible)                 | Event Driven Ansible modules  |\n\n## Links to other Validated Configuration Collections for Ansible Automation Platform\n\n|                                      Collection Name                                                  |                      Purpose                      |\n|:-----------------------------------------------------------------------------------------------------:|:-------------------------------------------------:|\n| [AAP Configuration Extended](https://github.com/redhat-cop/aap_configuration_extended)                | Where other useful roles that don't fit here live |\n| [EE Utilities](https://github.com/redhat-cop/ee_utilities)                                            | Execution Environment creation utilities          |\n| [AAP installation Utilities](https://github.com/redhat-cop/aap_utilities)                             | Ansible Automation Platform Utilities             |\n| [AAP Configuration Template](https://github.com/redhat-cop/aap_configuration_template)                | Configuration Template for this suite             |\n| [Ansible Validated Gitlab Workflows](https://gitlab.com/redhat-cop/infra/ansible_validated_workflows) | Gitlab CI/CD Workflows for ansible content        |\n| [Ansible Validated Github Workflows](https://github.com/redhat-cop/infra.ansible_validated_workflows) | Github CI/CD Workflows for ansible content        |\n\n## Included content\n\nClick the `Content` button to see the list of content included in this collection.\n\n## Installing this collection\n\nYou can install the infra.aap_configuration.collection with the Ansible Galaxy CLI:\n\n```console\nansible-galaxy collection install infra.aap_configuration\n```\n\nYou can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format:\n\n```yaml\n---\ncollections:\n  - name: infra.aap_configuration\n    # If you need a specific version of the collection, you can specify like this:\n    # version: ...\n```\n\n## Conversion from controller_configuration\n\nIf you were using a version of infra.controller_configuration, please refer to our Conversion Guide here: [Conversion Guide](https://github.com/redhat-cop/infra.aap_configuration/blob/devel/docs/CONVERSION_GUIDE.md)\n\n## Using This Collection\n\n**Install This Collection:**\nEnsure this collection (`infra.aap_configuration`) is installed:\n\n```bash\nansible-galaxy collection install infra.aap_configuration\n```\n\n**Run Playbooks from This Collection:**\nTo execute a playbook packaged within this collection (e.g., `configure_aap.yml`):\n\n```console\nansible-playbook infra.aap_configuration.configure_aap.yml\n```\n\n**Troubleshooting \"couldn't resolve module/action\":**\nThis error usually means the required Ansible collection (e.g., `infra.aap_configuration` or a dependency like ansible.controller) is:\n\n* Not installed.\n* Incorrectly named in the playbook.\n* Not found in Ansible's configured collection paths.\n\nVerify installation with `ansible-galaxy collection list` and that you have all the stated dependencies listed above in the requirements section.\n\nDefine following vars here, or in `aap_configs/auth.yml`\n`aap_hostname: aap.example.com`\n\nYou can also specify authentication by a combination of either:\n\n* `aap_hostname`, `aap_username`, `aap_password`\n* `aap_hostname`, `aap_token`\n\nThe OAuth2 token is the preferred method. You can obtain the token through the preferred `aap_token` module, or through the\nAWX CLI [login](https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.6/html/automation_execution_api_overview/controller-api-auth-methods)\ncommand.\n\nAAP token module would be invoked with this code:\n\n```yaml\n    - name: Create a new token using platform username/password\n      ansible.platform.token:\n        description: 'Creating token to test controller jobs'\n        scope: \"write\"\n        state: present\n        aap_hostname: \"{{ aap_hostname }}\"\n        aap_username: \"{{ aap_username }}\"\n        aap_password: \"{{ aap_password }}\"\n\n```\n\n### Error Handling\n\nMany of the roles in this collection use asynchronous tasks to perform their\nactions. By default the first failed asynchronous task will cause the playbook to\nfail. Setting the `aap_configuration_collect_logs` variable to `true` will\nenable collecting all asynchronous task failure messages and allow the playbook\nto run to completion.\n\nWhen `aap_configuration_collect_logs` is enabled the reported errors are\ncollected in a variable called `aap_configuration_role_errors`. This variable is\na dictionary where each key is the type of the configuration item that failed to\nbe applied. The value of each key is a list of all the failures of that type.\n\nWhen the `dispatch` role is used and `aap_configuration_collect_logs` is enabled\nit will display any errors encountered while applying the configurations and\nfail.\n\nExample Output when using the `dispatch` role and encoutering failures:\n\n```yaml\nfatal: [localhost]: FAILED! =\u003e {\n    \"msg\": [\n        \"Errors encountered applying configurations:\",\n        {\n            \"aap_organizations_errors\": [\n                {\n                    \"ERROR_MESSAGE\": \"Request to /api/controller/v2/instance_groups/?name=not-real returned 0 items, expected 1\",\n                    \"name\": \"Test Organization\"\n                },\n                {\n                    \"ERROR_MESSAGE\": \"Request to /api/controller/v2/instance_groups/?name=not-real returned 0 items, expected 1\",\n                    \"name\": \"Test Organization 2\"\n                }\n            ],\n            \"controller_applications_errors\": [\n                {\n                    \"ERROR_MESSAGE\": \"Request to /api/controller/v2/organizations/?name=UnknownOrg returned 0 items, expected 1\",\n                    \"name\": \"controller_application-failed-app1\",\n                    \"organization\": \"UnknownOrg\"\n                },\n                {\n                    \"ERROR_MESSAGE\": \"value of authorization_grant_type must be one of: password, authorization-code, got: password2\",\n                    \"name\": \"controller_application-failed-app2\",\n                    \"organization\": \"Default\"\n                }\n            ],\n        }\n    ]\n}\n```\n\n### Registering values\n\nAs of version 4.0.0 of this collection, you can now collect information from the items which are created or modified by this collection. You can either add `register: \u003cvar\u003e` to any item which is created to capture the outputs of that item, or set a value for `aap_configuration_register` which will capture all objects created. This fuinctionality may be particularly useful for capturing IDs of objects to enable performing further actions.\n\nBelow is an example for adding a register to a signle item:\n\n```yaml\ncontroller_templates:\n  - name: myjt1\n    project: Demo Project\n    playbook: install_product_demos.yml\n    inventory: Demo Inventory\n    register: register_var\n```\n\nThe resulting varaible from setting `aap_configuration_register` will be as follows:\n\n```json\n\"aap_register_var\": {\n        \"job_templates\": [\n            {\n                \"ansible_job_id\": \"j994617402834.25953\",\n                \"attempts\": 4,\n                \"changed\": false,\n                \"failed\": false,\n                \"finished\": 1,\n                \"id\": 11,\n                \"results_file\": \"/Users/tpage/.ansible_async/j994617402834.25953\",\n                \"started\": 1,\n                \"stderr\": \"\",\n                \"stderr_lines\": [],\n                \"stdout\": \"\",\n                \"stdout_lines\": []\n            },\n            {\n                \"ansible_job_id\": \"j666467675004.25976\",\n                \"attempts\": 1,\n                \"changed\": false,\n                \"failed\": false,\n                \"finished\": 1,\n                \"id\": 12,\n                \"results_file\": \"/Users/tpage/.ansible_async/j666467675004.25976\",\n                \"started\": 1,\n                \"stderr\": \"\",\n                \"stderr_lines\": [],\n                \"stdout\": \"\",\n                \"stdout_lines\": []\n            }\n        ]\n    }\n```\n\n### Automate the Automation\n\nEvery Ansible Controller instance has it's own particularities and needs. Every administrator team has it's own practices and customs. This collection allows adaptation to every need, from small to large scale, having the objects distributed across multiple environments and leveraging Automation Webhook that can be used to link a Git repository and Ansible automation natively.\n\n#### Scale at your needs\n\nThe input data can be organized in a very flexible way, letting the user use anything from a single file to an entire file tree to store the controller objects definitions, which could be used as a logical segregation of different applications, as needed in real scenarios.\n\n### Controller Export\n\nThe awx command line can export json that is compatible with this collection.\nIn addition there is an ansible.controller export module that use the awx command line to export.\n[More details can be found here](https://github.com/redhat-cop/infra.aap_configuration/blob/devel/docs/EXPORT_README.md)\n\n### Template Example\n\nA [Template to use in order to start using the collections can be found here](https://github.com/redhat-cop/aap_configuration_template)\n\n### See Also\n\n[Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details.\n\n## Release and Upgrade Notes\n\nFor details on changes between versions, please see [the changelog for this collection](https://github.com/redhat-cop/infra.aap_configuration/blob/devel/CHANGELOG.rst).\n\n## Releasing, Versioning and Deprecation\n\nThis collection follows [Semantic Versioning](https://semver.org/). More details on versioning can be found [in the Ansible docs](https://docs.ansible.com/ansible/latest/dev_guide/developing_collections.html#collection-versions).\n\nWe plan to regularly release new minor or bugfix versions once new features or bugfixes have been implemented.\n\nReleasing the current major version happens from the `devel` branch.\n\n## Roadmap\n\nAdding the ability to use direct output from the awx export command in the roles along with the current data model.\n\n## Contributing to this collection\n\nWe welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the [Controller Configuration collection repository](https://github.com/redhat-cop/aap_configuration).\nMore information about contributing can be found in our [Contribution Guidelines.](https://github.com/redhat-cop/aap_configuration/blob/devel/.github/CONTRIBUTING.md)\n\n\u003c!-- markdownlint-disable-line MD033 MD034 --\u003eWe have a community meeting every 4 weeks. Find the agenda in the [issues](https://github.com/redhat-cop/infra.aap_configuration/issues) and the calendar invitation here:\u003ca target=\"_blank\" href=\"https://raw.githubusercontent.com/redhat-cop/infra.aap_configuration/devel/docs/aap_config_as_code_public_meeting.ics\"\u003e\u003cimg border=\"0\" alt=\"Google Calendar invite\" width=\"20\" src=\"https://ssl.gstatic.com/calendar/images/dynamiclogo_2020q4/calendar_20_2x.png\"\u003e\u003c/a\u003e\n\n## Code of Conduct\n\nThis collection follows the Ansible project's\n[Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).\nPlease read and familiarize yourself with this document.\n\n## Licensing\n\nGNU General Public License v3.0 or later.\n\nSee [LICENSE](https://github.com/redhat-cop/infra.aap_configuration/blob/devel/LICENSE) to see the full text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredhat-cop%2Finfra.aap_configuration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredhat-cop%2Finfra.aap_configuration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredhat-cop%2Finfra.aap_configuration/lists"}