Feedback

Chat Icon

AWX in Action

Ansible Orchestration at Scale

Scale AWX Without Breaking It: Mesh, Hop Nodes, and Capacity Planning
47%

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

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_capacity algorithm, ~100MB per fork) or from CPU (cpu_capacity, 4 forks per core). A job consumes capacity roughly equal to its forks + 1 value. 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 Scale

Enroll now to unlock all content and receive all future updates for free.