Scale AWX Without Breaking It: Mesh, Hop Nodes, and Capacity Planning
Instance Groups: Splitting Workloads by Intent
After adding the new execution node, you can add it to the same group as the control node. Follow these steps:
- Go to Instance Groups.
- Select the group that contains the control node (controlplane).
- Click Instances -> Associate to add the new node to the group.
Associate Instance
When jobs run, AWX can now schedule them on either node in the group. A background task called the Task Manager picks the eligible instance with the most remaining capacity at the time the job launches.
Capacity is measured in forks and calculated either from memory (the default
mem_capacityalgorithm, ~100MB per fork) or from CPU (cpu_capacity, 4 forks per core). A job consumes capacity roughly equal to itsforks + 1value. It's not round-robin, and it's not Kubernetes-style scheduling.
If you want more control over which nodes are used for specific jobs, you can create a new instance group and add the nodes you want to use. Jobs end up in a specific group either because:
- The job template has an instance group set on it.
- The inventory or organization the job uses has an instance group assigned.
This way, you can split workloads by intent. For example, if we had a group of 5 nodes, we could create the following groups:
- Group 1: Contains nodes 1 and 2.
- Group 2: Contains nodes 3 and 4.
- Group 3: Contains node 5.
We could then run security-related jobs on Group 1, deployment jobs on Group 2, and everything else on Group 3, simply by setting the right instance group on each job template.
To create a group in our setup, click Instance Groups -> Add -> Add instance group and provide a name (e.g., MyGroup).
AWX in Action
Ansible Orchestration at ScaleEnroll now to unlock all content and receive all future updates for free.

