AWX Automation
Drive Ansible playbooks from Fabrik with structured input forms, reusable validation, approval workflows, and live job output — all against your existing AWX or Ansible Tower deployment.
The Query Builder reads state out of ACI. AWX Automation is the other direction: pushing configuration in, using the playbooks you've already written. Fabrik doesn't replace Ansible — it sits in front of your existing AWX or Ansible Tower deployment and turns "launch this job template with these variables" into a guided, validated, auditable flow.
What Fabrik adds on top of AWX
AWX is excellent at running playbooks. It's less excellent at the user-facing side of a multi-tenant operations team: spreadsheet-style input, per-row validation, approval chains, searchable execution history. Fabrik fills that gap.
- Structured input — spreadsheet-like tables with typed columns instead of free-form
extra_varsJSON. - Reusable validation — regex patterns, static allowed-value lists, or live APIC queries, shared across templates.
- Approval workflow — optional per-template approver gate before execution.
- Bulk execution — all rows go to AWX in one job launch; no manual per-row babysitting.
- Live monitoring — real-time playbook output streamed back into the browser via WebSocket.
- Per-host outcomes — the rows that succeeded and the rows that failed, surfaced after the run.
- Audit trail — who launched what, with what data, from which IP, and what AWX ultimately did.
Fabrik never holds device credentials. The AWX credential you pick at launch stays inside AWX's own vault — Fabrik just references it by ID. See Connections for the details.
The four moving parts
AWX automation in Fabrik is four objects that chain together.
| Object | What it is |
|---|---|
| AWX Connection | Stored credentials for an AWX or Tower instance — URL plus OAuth2 token or username/password. |
| Automation Template | A Fabrik wrapper around an AWX Job Template or Workflow Template. Adds the input schema, validation rules, approver lists, and check-mode defaults. |
| Automation Request | A single user's submission: which template, which data, which target APIC, which AWX credential. Goes through pending / awaiting-approval / running / successful / failed. |
| Automation Execution | The actual AWX job launched for a request. Tracks status, duration, stdout, and per-row results. One request → one execution in the current bulk-only flow. |
The one-line mental model: Connection is where AWX lives. Template is what to run. Request is a specific "run this." Execution is the AWX job itself.
Bulk execution, end to end
When a user submits a request, Fabrik:
- Validates every row against the template's rules (regex / static list / query list).
- Freezes a snapshot of the template config onto the request (so later edits don't change what runs).
- Either queues the request for approval, or hands it straight to a Celery worker.
- The worker launches one AWX job with all rows embedded as structured
extra_vars. - A job-events poller streams AWX output into
JobOutputChunkrows and pushes it over WebSocket. - When the job finishes, per-host outcomes are parsed from AWX artifacts and written back to the execution.
Per-row and hybrid execution modes existed historically and were removed — bulk is now the only mode. All rows, one job, one set of extra_vars, one execution record.
Playbooks that expect a list of hosts in extra_vars or a structured input dict typically work unchanged. Fabrik passes each schema's rows under the awx_variable_name you configure on the template.
When to reach for AWX automation
Typical signals:
- You already have Ansible playbooks. AWX automation lets non-Ansible users launch them safely. No new tooling to learn on the operations side.
- The operation is bulk. Creating 50 tenants, adding 200 static paths to EPGs, rolling out a config change across many devices. The spreadsheet input model fits.
- Input validation matters. Tenant name conventions, VLAN ranges, leaf node IDs — things that are painful to catch in the playbook itself but trivial to catch at the form.
- You need an audit trail. Who ran what, when, from where, against which APIC, with which data. Request metadata + execution history covers it.
And when not to:
- You're just reading state. Use the Query Builder. AWX isn't the right tool for a fact-gathering task you don't need to repeat at scale.
- You want one-off ad-hoc commands. AWX templates are the unit of work. Bypass Fabrik and use AWX directly if you just want to launch something without building a schema.
Continue reading
Connections
Set up AWX/Tower credentials — OAuth2 tokens, basic auth, SSL verification, credential prefix filtering, test-connection.
Templates
Wrap AWX job/workflow templates, build input schemas, configure variable mappings, set approval and check-mode defaults.
Validations
Regex patterns, static lists, query-based lists, column templates — the reusable library that keeps bad data out of AWX.
Requests
The user-facing wizard: pick template, pick APIC and AWX credential, fill out the form, review, submit.
Executions
Live job output, per-host results, relaunch, cancel, and how the backend monitors AWX jobs in real time.
Start with Connections — nothing in this section works without at least one AWX server hooked up.
Favorites, recents, and trending
Star the classes you use, attach notes that make them findable by intent, work with backend-synced recents that follow you across devices, see what your team is using via Trending, and tune the detail panel — all the personal-library features in one place.
Connections
Register an AWX or Ansible Tower server — OAuth2 tokens, basic auth, SSL verification, credential-prefix filtering, and how Fabrik talks to AWX without ever handling device secrets.