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

ComponentPurpose
ProjectsGit repos containing playbooks
InventoriesTarget hosts (static, dynamic, or smart)
CredentialsSSH keys, cloud tokens, vault passwords
Job TemplatesPlaybook + inventory + credentials = runnable job
WorkflowsChain job templates with conditional logic
SchedulesCron-like recurring job execution
RBACTeams, users, and granular permissions
NotificationsSlack, 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

LevelCan ViewCan UseCan ExecuteCan 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

FeatureAWXAAP Controller
CostFreeSubscription
SupportCommunityRed Hat
Certified contentNoYes
AnalyticsBasicAdvanced
Event-DrivenNoYes (EDA)
Upgrade pathManualSupported

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.