Introduction
AWX is the open-source web UI and REST API for managing Ansible automation at scale. It provides job scheduling, role-based access control, credential management, and real-time job monitoring — everything a team needs to run Ansible playbooks reliably across their infrastructure.
This page collects all AWX tutorials on AnsibleByExample, organized by topic.
AWX Architecture
┌────────────────────────────────────────┐
│ AWX Web UI │
│ (React frontend) │
├────────────────────────────────────────┤
│ AWX API │
│ (Django REST API) │
├──────────┬──────────┬──────────────────┤
│ Projects │ Inventory│ Credentials │
│ (Git) │ (hosts) │ (Vault/SSH) │
├──────────┴──────────┴──────────────────┤
│ Job Execution Engine │
│ (ansible-runner + containers) │
├────────────────────────────────────────┤
│ PostgreSQL │
│ (metadata + state) │
└────────────────────────────────────────┘
Key Components
| Component | Purpose |
|---|---|
| Projects | Git repos containing playbooks |
| Inventories | Target hosts (static, dynamic, or smart) |
| Credentials | SSH keys, cloud tokens, vault passwords |
| Job Templates | Playbook + inventory + credentials = runnable job |
| Workflows | Chain job templates with conditional logic |
| Schedules | Cron-like recurring job execution |
| RBAC | Teams, users, and granular permissions |
| Notifications | Slack, email, webhook on job events |
Tutorials
Getting Started
Installation
Day-to-Day Usage
Enterprise Alternative
Quick Start Workflow
1. Install AWX
# Kubernetes (recommended)
kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml
# Docker Compose (development)
git clone https://github.com/ansible/awx.git
cd awx && make docker-compose
2. Create a Project
Link your Git repository containing Ansible playbooks:
AWX → Projects → Add
Name: Infrastructure Playbooks
SCM Type: Git
SCM URL: https://github.com/org/playbooks.git
Update on Launch: ✓
3. Add an Inventory
AWX → Inventories → Add Inventory
Name: Production
→ Hosts → Add
web01.example.com
web02.example.com
db01.example.com
Or use dynamic inventory (AWS, Azure, GCP, VMware).
4. Store Credentials
AWX → Credentials → Add
Name: SSH Production
Type: Machine
Username: ansible
SSH Private Key: (paste key)
5. Create a Job Template
AWX → Templates → Add Job Template
Name: Deploy Application
Inventory: Production
Project: Infrastructure Playbooks
Playbook: deploy.yml
Credentials: SSH Production
6. Launch and Monitor
Click Launch → watch real-time output → review results.
RBAC Model
Organization
├── Team: Platform Engineering
│ ├── alice (Admin) — full control
│ └── bob (Execute) — can launch jobs
├── Team: Development
│ └── charlie (Use) — can use templates
└── Team: Audit
└── dave (Read) — view only
Permission Levels
| Level | Can View | Can Use | Can Execute | Can Admin |
|---|---|---|---|---|
| Read | ✓ | |||
| Use | ✓ | ✓ | ||
| Execute | ✓ | ✓ | ✓ | |
| Admin | ✓ | ✓ | ✓ | ✓ |
Workflow Templates
Chain jobs with conditional paths:
Deployment Workflow
├── [Always] Run Linting
│ ├── [Success] Deploy to Staging
│ │ ├── [Success] Run Integration Tests
│ │ │ ├── [Success] Deploy to Production
│ │ │ └── [Failure] Rollback Staging
│ │ └── [Failure] Notify Team
│ └── [Failure] Notify Team
API Integration
# Launch job template via API
curl -X POST -H "Authorization: Bearer $TOKEN" \
https://awx.example.com/api/v2/job_templates/7/launch/ \
-H "Content-Type: application/json" \
-d '{"extra_vars": {"version": "2.3.1"}}'
# Check job status
curl -H "Authorization: Bearer $TOKEN" \
https://awx.example.com/api/v2/jobs/42/
# Get job output
curl -H "Authorization: Bearer $TOKEN" \
"https://awx.example.com/api/v2/jobs/42/stdout/?format=txt"
Scheduling
Job Template → Schedules → Add
Name: Nightly Patching
Frequency: Every day at 02:00 UTC
# Or complex schedules
RRULE: FREQ=WEEKLY;BYDAY=TU,TH;BYHOUR=2;BYMINUTE=0
AWX vs Ansible Automation Platform
| Feature | AWX | AAP Controller |
|---|---|---|
| Cost | Free | Subscription |
| Support | Community | Red Hat |
| Certified content | No | Yes |
| Analytics | Basic | Advanced |
| Event-Driven | No | Yes (EDA) |
| Upgrade path | Manual | Supported |
Related Articles
- Ansible Best Practices Guide
- Ansible Roles Explained
- Ansible Vault: Encrypt Sensitive Data
- Ansible-Core Guide
Conclusion
AWX provides a production-ready web UI, API, and RBAC layer for Ansible automation — free and open source. Start with the AWX Operator on Kubernetes for production, or Docker for development. Use job templates for repeatable automation, workflows for complex multi-step deployments, and the API for CI/CD integration.