Awx, geographically seperated hosts with ansible distribution points

First I have tried searching, I just can’t seem to search for the right thing. I can’t imagine I’m the first to think of this.
I have a decent number of endpoints spread across the state. I would like to run a single AWX instance that will use ansible installed on a single box at each geographical location and distributed to endpoints from those regular ansible points. I’m trying to keep everything within the bridged local network, I just got a local kubernetes/awx installed. Now that I have gotten a basic understand of how to use AWX, figuring out how to do what I thought was possible is proving to be a bit more difficult than I thought.
I hope I was clear in what I am trying to achieve.
Thanks for any assistance in advance!

Use awx executors hosted in different regions.

I assume you mean execution environments, but I could be totally off. Will you point me to any documentation, guides, walk trough’s or other relating to this if they exist? I assume they do. I just can’t find them. If it’s a module that requires separate addition/installation, I haven’t even started learning about all of them that are available.

I believe they mean Execution Nodes. You create instances in an instance group, download the install bundle, and run the ansible bundle against the desired host. The node becomes part of the AWX mesh and will be queued for jobs that select its instance group.

I finally figured it out. I’m just updating this in case someone else wants to try something similar.
I have a single AWX. I have multiple hosts [execution nodes] with ansible installed that I want to essentially use as a relay for each remote field office to the the local computers to the execution node.
for simplicity, i have a single inventory in AWX that matches my organization name. I use groups and tags to separate hosts out. I have a group for execution_nodes which is what you point your playbook at. The with_items: you point to the groups that you want the tasks to be run on. Here is a very basic playbook that allows me to accomplish what I am describing.


  • name: Start updates
    hosts: execution_node
    gather_facts: true
    become: true
    become_method: sudo

    vars:
    known_hosts_dir: “/var/lib/awx/projects/ssh_known_hosts”

    tasks:

    • name: Set SSH arguments
      set_fact:
      ansible_ssh_common_args: >-
      -o UserKnownHostsFile={{ known_hosts_dir }}/known_hosts

    • name: Ping Hosts
      ansible.builtin.ping:
      delegate_to: “{{ item }}”
      with_items: “{{ groups[‘ubuntu_hosts’] }}”

    • name: Perform an upgrade
      ansible.builtin.apt:
      upgrade: full
      delegate_to: “{{ item }}”
      with_items: “{{ groups[‘ubuntu_hosts’] }}”