This Ansible collection allows for easy interaction with an AWX or Ansible Controller server via Ansible roles using the AWX/Controller collection modules.
The 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.
---
- name: Playbook to configure ansible controller post installation
hosts: localhost
connection: local
vars:
controller_validate_certs: false
collections:
- awx.awx
Click the Content
button to see the list of content included in this collection.
You can install the redhat_cop controller_configuration collection with the Ansible Galaxy CLI:
ansible-galaxy collection install redhat_cop.controller_configuration
You can also include it in a requirements.yml
file and install it with ansible-galaxy collection install -r requirements.yml
, using the format:
---
collections:
- name: redhat_cop.controller_configuration
# If you need a specific version of the collection, you can specify like this:
# version: ...
If you were using a version of redhat_cop.tower_configuration, please refer to our Conversion Guide here: Conversion Guide
The awx.awx or ansible.controller collection must be invoked in the playbook in order for ansible to pick up the correct modules to use.
The following command will invoke the playbook with the awx collection
ansible-playbook redhat_cop.controller_configuration.configure_awx.yml
The following command will invoke the playbook with the ansible.controller collection
ansible-playbook redhat_cop.controller_configuration.configure_controller.yml
Otherwise 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.
- name: Playbook to configure ansible controller post installation
hosts: localhost
connection: local
vars:
controller_validate_certs: false
collections:
- awx.awx
Define following vars here, or in controller_configs/controller_auth.yml
controller_hostname: ansible-controller-web-svc-test-project.example.com
You can also specify authentication by a combination of either:
controller_hostname
,controller_username
,controller_password
controller_hostname
,controller_oauthtoken
The OAuth2 token is the preferred method. You can obtain the token through the preferred controller_token
module, or through the
AWX CLI login
command.
These can be specified via (from highest to lowest precedence):
- direct role variables as mentioned above
- environment variables (most useful when running against localhost)
- a config file path specified by the
controller_config_file
parameter - a config file at
~/.controller_cli.cfg
- a config file at
/etc/controller/controller_cli.cfg
Config file syntax looks like this:
[general]
host = https://localhost:8043
verify_ssl = true
oauth_token = LEdCpKVKc4znzffcpQL5vLG8oyeku6
Controller token module would be invoked with this code:
- name: Create a new token using controller username/password
awx.awx.token:
description: 'Creating token to test controller jobs'
scope: "write"
state: present
controller_host: "{{ controller_hostname }}"
controller_username: "{{ controller_username }}"
controller_password: "{{ controller_password }}"
Every Ansible Controller instance has it's own particularities and needs. Every administrator team has it's own practices and costumes. This collection allows to addapt to every needs, 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.
A complete example of how to use all of the roles present in the collection is available at the following README.md, where all the phases to allow CI/CD for the Controller Configuration are provided.
The input data can be organized in a very flexible way, letting the user to use 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.
The awx command line can export json that is compatible with this collection. More details can be found here
- Ansible Using collections for more details.
For details on changes between versions, please see the changelog for this collection.
Adding the ability to use direct output from the awx export command in the roles along with the current data model.
We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the Controller Configuration collection repository. More information about contributing can be found in our Contribution Guidelines.
GNU General Public License v3.0 or later.
See LICENSE to see the full text.