AAP Mesh Node Addition¶
Add execution and hop nodes to containerized AAP 2.6+ without re-running the full installer.
Quick Start¶
Two installation methods:
# Install collection (from clone or extracted source tree)
ansible-galaxy collection install -r requirements.yml
ansible-galaxy collection install --force --no-deps .
export ANSIBLE_COLLECTIONS_PATH=./aap-setup-<AAP_VERSION>/collections:${ANSIBLE_COLLECTIONS_PATH}
# Run preflight checks
ansible-playbook -i inventory.yml \
playbooks/preflight.yml \
-e aap_setup_dir=/path/to/installer
# Add nodes
ansible-playbook -i inventory.yml \
playbooks/add_node.yml \
-e aap_setup_dir=/path/to/installer
# Generate bundle on control host
ansible-playbook playbooks/generate_bundle.yml \
-i inventory.yml \
-e aap_setup_dir=/path/to/setup \
-e aap_add_node_target_hostname=exec1.example.com \
-e aap_add_node_receptor_peers='["controller.example.com"]'
# Transfer bundle to target, then on target:
tar -xzf offline-bundle-exec1.example.com-*.tar.gz
cd offline-bundle-exec1.example.com-*
sudo ansible-playbook -c local install.yml
Documentation¶
| Section | Content |
|---|---|
| Installation | Prerequisites and step-by-step guide |
| Pick Your Topology | Online vs Offline decision tree |
| Offline Installation | Air-gapped bundle workflow |
| FAQ | Common questions |
| Topology Patterns | Peer direction and firewall rules |
| Collection Structure | Roles, playbooks, variables |
Features¶
- Two install methods — Online (SSH) or Offline (bundle transfer)
- Hop and Execution nodes — Both node types supported
- Multi-hop chains — EN → HN → Controller topologies
- Parallel node addition — Multiple nodes in single playbook run
- Preflight validation — Catch errors before installation starts
- Minimal disruption — No controller restart unless AIO tcp-listener needed
- Instance Groups via inventory —
[instance_group_<name>]groups auto-create IGs - RHEL 9 + RHEL 10 — Tested on both
- BYO TLS certificates — Use existing certs or generate new ones
Test Status¶
| Scenario | Status |
|---|---|
| Single EN (online) | PASS |
| Single HN (online) | PASS |
| HN + EN chain (online) | PASS |
| Single EN (offline bundle) | PASS |
| Single HN (offline bundle) | PASS |
| HN + EN chain (offline) | PASS |
| TLS self-signed (default) | PASS |
| Image bundling (air-gap) | BLOCKED |
Preflight Checks¶
The preflight.yml playbook validates:
| Check | What It Catches |
|---|---|
| SSH to controller | Connection failures before install |
| Controller container running | Missing automation-controller-task |
| SSH to execution nodes | Network/auth issues (online only) |
| Network EN→Controller:27199 | Firewall blocks |
| DNS resolution | Name resolution failures |
| Controller/node clock skew | Receptor signature expiry or validity failures |
| Machine-ID uniqueness | Cloned VM issues |
| Inventory format | receptor_peers must be list |
| AIO local-only detection | Warns about disruption |
Offline Preflight
Offline mode runs controller-side checks only — no SSH to target nodes.
Skip preflight with -e aap_add_node_preflight_enabled=false
Architecture¶
Online Mode:
Control Host ──SSH──► Controller (fetch certs, register instances)
──SSH──► Execution Nodes (install receptor)
Offline Mode:
Control Host ──SSH──► Controller (generate bundle)
│
[Transfer bundle]
▼
Execution Node (local install)
Mesh Topologies:
EN ──dial:27199──▶ Controller (direct)
EN ──▶ Hop ──▶ Controller (multi-hop)
EN ──▶ Hop1 ──▶ Hop2 ──▶ Controller (DMZ chain)
Tested Configurations¶
| Component | Version |
|---|---|
| AAP Controller | 2.6-8 |
| Containerized setup | 2.7-4 (single execution node) |
| Execution Nodes | RHEL 9.x, RHEL 10.0 |
| Topology | Direct, Multi-hop, Offline |