I am posting this because I usually have to play with this several times whenever this problem comes up. I am not sure how often this will come up for others… but hopefully this will save someone sometime in the future ![]()
There is an awesome Ansible content collection for AWX itself Awx.Awx — Ansible Documentation
One of the Lookup Plugins there is very powerful: awx.awx.controller_api lookup – Search the API for objects — Ansible Documentation
This will allow you to basically do any lookup in the API (which you can get to via https://your_awx_ip/api/v2)
Some of the documentation examples from the lookup plugin are great but they don’t contain a playbook so I thought I would show a very simple Ansible Playbook here that could run locally (on the AWX node itself).
---
- hosts: localhost
vars:
desired_job_template: 'Network-Banner'
tasks:
- name: retrieve Network-Banner job template
set_fact:
network_banner_exist: "{{ query('awx.awx.controller_api', 'job_templates', query_params={ 'name': desired_job_template }, host='localhost', username='admin', password='ansible123!', verify_ssl=False) }}"
- name: print out network_banner_exist var
debug:
msg: "{{ network_banner_exist }}"
failed_when: network_banner_exist == []
- name: fail when survey is not enabled
debug:
msg: "Is a survey enabled for {{ desired_job_template }}? {{ network_banner_exist[0].survey_enabled }}"
failed_when: not network_banner_exist[0].survey_enabled
This Ansible Playbook is (numbers corresponding to the tasks)
- Queries the job_templates, specifically looking for a job template called
desired_job_template, which in my case is a job calledNetwork-Banner - Will fail if this job is empty (which is
[]) which means it does not exist. - Will fail if this job has no survey enabled.
This is a quick way to audit AWX / automation controller to make sure jobs exist, or are configured the way you want them.
I am showing usernames and passwords here, obviously you would want to encrypt those with something like ansible-vault.