{"id":20155230,"url":"https://github.com/redhat-cop/infra.controller_configuration","last_synced_at":"2026-03-18T01:17:22.091Z","repository":{"id":259446865,"uuid":"867884066","full_name":"redhat-cop/infra.controller_configuration","owner":"redhat-cop","description":"ansible collection for standardizing configuring AAP 2.4 and earlier","archived":false,"fork":false,"pushed_at":"2026-03-13T15:59:29.000Z","size":4761,"stargazers_count":7,"open_issues_count":5,"forks_count":19,"subscribers_count":13,"default_branch":"devel","last_synced_at":"2026-03-14T04:20:35.899Z","etag":null,"topics":["validated-content"],"latest_commit_sha":null,"homepage":"","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":"2024-10-04T23:28:59.000Z","updated_at":"2026-03-13T15:59:12.000Z","dependencies_parsed_at":"2024-10-25T14:06:26.110Z","dependency_job_id":"afeeb87e-996d-42d0-b286-c7c57be7316f","html_url":"https://github.com/redhat-cop/infra.controller_configuration","commit_stats":null,"previous_names":["redhat-cop/infra.controller_configuration"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/redhat-cop/infra.controller_configuration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.controller_configuration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.controller_configuration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.controller_configuration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.controller_configuration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redhat-cop","download_url":"https://codeload.github.com/redhat-cop/infra.controller_configuration/tar.gz/refs/heads/devel","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhat-cop%2Finfra.controller_configuration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30639317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-18T00:09:27.587Z","status":"ssl_error","status_checked_at":"2026-03-18T00:09:26.123Z","response_time":56,"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":["validated-content"],"created_at":"2024-11-13T23:30:38.067Z","updated_at":"2026-03-18T01:17:22.079Z","avatar_url":"https://github.com/redhat-cop.png","language":"YAML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Red Hat Communities of Practice Controller Configuration Collection\n\n![pre-commit tests](https://github.com/redhat-cop/infra.controller_configuration/actions/workflows/pre-commit.yml/badge.svg)\n![Release](https://github.com/redhat-cop/infra.controller_configuration/actions/workflows/release_auto.yml/badge.svg)\n\u003c!-- markdownlint-disable-line MD033 MD034 --\u003e\u003ca href=\"https://raw.githubusercontent.com/redhat-cop/infra.controller_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 an AWX or Ansible Controller server via Ansible roles using the AWX/Controller collection modules.\n\n## Deprecation warning!!!!!!!\nThis collection only supports AWX and AAP 2.4 and earlier. For AAP 2.5+ take a look at our [new collection](https://github.com/redhat-cop/infra.aap_configuration) that allows you to manage your whole AAP configuration in one place. We will try and continue supporting this collection until AAP 2.4 support ends (currently set for 06/30/2026)[lifecycle](https://access.redhat.com/support/policy/updates/ansible-automation-platform).\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 forum, 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 awx.awx or ansible.controller collections MUST be installed in order for this collection to work. It is recommended they be invoked in the playbook in the following way.\n\n```yaml\n---\n---\ncollections:\n  - name: infra.controller_configuration\n  # - name: awx.awx\n  # or\n  - name: ansible.controller\n    version: '\u003e=4.5.0,\u003c4.6.0'\n  - name: ansible.eda\n  - name: ansible.hub\n...\n```\n\n## Links to Ansible Automation Platform Collections\n\n| Collection Name                                                                              | Purpose                                  |\n| -------------------------------------------------------------------------------------------- | ---------------------------------------- |\n| [awx.awx/Ansible.controller repo](https://github.com/ansible/awx/tree/devel/awx_collection)  | Automation controller modules            |\n| [Ansible Hub Configuration](https://github.com/ansible/automation_hub_collection)            | Automation hub configuration             |\n\n## Links to other Validated Configuration Collections for Ansible Automation Platform\n\n| Collection Name                                                                           | Purpose                                  |\n| ----------------------------------------------------------------------------------------- | ---------------------------------------- |\n| [Controller Configuration](https://github.com/redhat-cop/infra.controller_configuration)  | Automation controller configuration      |\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\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.controller_configuration.collection with the Ansible Galaxy CLI:\n\n```console\nansible-galaxy collection install infra.controller_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.controller_configuration\n    # If you need a specific version of the collection, you can specify like this:\n    # version: ...\n```\n\n## Conversion from tower_configuration\n\nIf you were using a version of redhat_cop.tower_configuration, please refer to our Conversion Guide here: [Conversion Guide](https://github.com/redhat-cop/infra.controller_configuration/blob/devel/docs/CONVERSION_GUIDE.md)\n\n## Using this collection\n\nThe awx.awx or ansible.controller collection must be invoked in the playbook in order for Ansible to pick up the correct modules to use.\n\nThe following command will invoke the collection playbook. This is considered a starting point for the collection.\n\n```console\nansible-playbook infra.controller_configuration.configure_controller.yml\n```\n\nOtherwise it will look for the modules only in your base installation. If there are errors complaining about \"couldn't resolve module/action\" this is the most likely cause.\n\n```yaml\n- name: Playbook to configure ansible controller post installation\n  hosts: localhost\n  connection: local\n  vars:\n    controller_validate_certs: true\n  collections:\n    - awx.awx\n```\n\nDefine following vars here, or in `controller_configs/controller_auth.yml`\n`controller_hostname: ansible-controller-web-svc-test-project.example.com`\n\nYou can also specify authentication by a combination of either:\n\n- `controller_hostname`, `controller_username`, `controller_password`\n- `controller_hostname`, `controller_oauthtoken`\n\nThe OAuth2 token is the preferred method. You can obtain the token through the preferred `controller_token` module, or through the\nAWX CLI [login](https://docs.ansible.com/automation-controller/4.4/html/controllerapi/authentication.html)\ncommand.\n\nThese can be specified via (from highest to lowest precedence):\n\n- direct role variables as mentioned above\n- environment variables (most useful when running against localhost)\n- a config file path specified by the `controller_config_file` parameter\n- a config file at `~/.controller_cli.cfg`\n- a config file at `/etc/controller/controller_cli.cfg`\n\nConfig file syntax looks like this:\n\n```ini\n[general]\nhost = https://localhost:8043\nverify_ssl = true\noauth_token = LEdCpKVKc4znzffcpQL5vLG8oyeku6\n```\n\nController token module would be invoked with this code:\n\n```yaml\n    - name: Create a new token using controller username/password\n      awx.awx.token:\n        description: 'Creating token to test controller jobs'\n        scope: \"write\"\n        state: present\n        controller_host: \"{{ controller_hostname }}\"\n        controller_username: \"{{ controller_username }}\"\n        controller_password: \"{{ controller_password }}\"\n\n```\n\n### Error Handling\n\nMany of the roles in this collection use asynchrous tasks to perform their\nactions. By default the first failed asyncronous task will cause the playbook to\nfail. Setting the `controller_configuration_collect_logs` variable to `true`\nwill enable collecting all asyncronous task failure messages and allow the\nplaybook to run to completion.\n\nWhen `controller_configuration_collect_logs` is enabled the reported errors are\ncollected in a variable called `controller_configuration_role_errors`. This\nvariable is a dictionary where each key is the type of the configuration item\nthat failed to be applied. The value of each key is a list of all the failures\nof that type.\n\nWhen the `dispatch` role is used and `controller_configuration_collect_logs` is\nenabled it will display any errors encountered while applying the configurations\nand fail.\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### 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\nA complete example of how to use all of the roles present in the collection is available at the following [README.md](https://github.com/redhat-cop/infra.controller_configuration/blob/devel/roles/filetree_create/automatetheautomation.md), where all the phases to allow CI/CD for the Controller Configuration are provided.\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 awx.awx/ansible.controller export module that use the awx command line to export.\nSee [the export guide](EXPORT_README.md) for more details\n\n### Template Example\n\nSee [our template](https://github.com/redhat-cop/aap_configuration_template) to use in order to start using the collections can be found\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.controller_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/infra.controller_configuration).\nMore information about contributing can be found in our [Contribution Guidelines.](https://github.com/redhat-cop/infra.controller_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.controller_configuration/issues) and the calendar invitation here:\u003ca target=\"_blank\" href=\"https://raw.githubusercontent.com/redhat-cop/infra.controller_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.controller_configuration/blob/devel/LICENSE) to see the full text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredhat-cop%2Finfra.controller_configuration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredhat-cop%2Finfra.controller_configuration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredhat-cop%2Finfra.controller_configuration/lists"}