Getting Started with Ansible AWX: Complete Installation and Configuration Guide
Ansible AWX is the open-source upstream project for Red Hat Ansible Automation Platform. It provides a web-based user interface, REST API, and task engine built on top of Ansible, making it easier to manage and scale your automation. This guide will walk you through installing and configuring AWX in 2025.
📑 Table of Contents
- What is AWX?
- AWX vs Ansible Automation Platform
- Installation Methods
- Prerequisites
- Method 1: AWX Operator on Minikube
- Step 1: Install Minikube
- Step 2: Deploy AWX Operator
- Step 3: Create AWX Instance
- Step 4: Get Admin Password
- Step 5: Access AWX
- Initial Configuration
- 1. Create an Organization
- 2. Add Credentials
- 3. Create an Inventory
- 4. Create a Project
- 5. Create a Job Template
- Running Your First Job
- Best Practices
- Conclusion
What is AWX?
AWX provides enterprise-like features for Ansible automation:
- Web UI – Visual interface for managing playbooks and inventories
- REST API – Programmatic access to all features
- Role-Based Access Control – Granular permissions management
- Job Scheduling – Run playbooks on schedules
- Inventory Management – Dynamic and static inventory support
- Credential Management – Secure storage for secrets
- Notifications – Alerts via email, Slack, webhooks
- Logging and Auditing – Complete history of all runs
AWX vs Ansible Automation Platform
Understanding when to use each:
| Feature | AWX | AAP |
|---|---|---|
| Cost | Free | Subscription |
| Support | Community | Red Hat Support |
| Updates | Frequent, potentially breaking | Stable, tested |
| Security SLA | None | Guaranteed |
| Production Use | At your own risk | Recommended |
| Certification | No | Yes |
Use AWX for: Learning, development, small teams, home labs
Use AAP for: Production environments, enterprise deployments, compliance requirements
Installation Methods
AWX can be installed via:
- AWX Operator on Kubernetes – Recommended method
- Docker Compose – For development and testing
- Minikube – Single-node Kubernetes for labs
Prerequisites
Before installing AWX, ensure you have:
- Linux server (RHEL, Ubuntu, or compatible)
- Minimum 4 GB RAM (8 GB recommended)
- 2+ CPU cores
- 20 GB disk space
- Docker or Kubernetes cluster
- kubectl and Helm (for Kubernetes install)
Method 1: AWX Operator on Minikube
Step 1: Install Minikube
# Install minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Start minikube with sufficient resources
minikube start --cpus=4 --memory=8g --addons=ingress
# Verify
minikube status
Step 2: Deploy AWX Operator
# Create namespace
kubectl create namespace awx
# Clone AWX Operator repository
git clone https://github.com/ansible/awx-operator.git
cd awx-operator
# Checkout latest stable release
git checkout tags/2.19.1
# Deploy the operator
export NAMESPACE=awx
make deploy
# Verify operator is running
kubectl get pods -n awx
Step 3: Create AWX Instance
Create a file named awx-instance.yaml:
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
namespace: awx
spec:
service_type: nodeport
nodeport_port: 30080
postgres_storage_class: standard
projects_persistence: true
projects_storage_access_mode: ReadWriteOnce
# Apply the configuration
kubectl apply -f awx-instance.yaml -n awx
# Watch the deployment progress
kubectl get pods -n awx -w
# Wait for all pods to be Running (takes 5-10 minutes)
Step 4: Get Admin Password
# Retrieve the admin password
kubectl get secret awx-admin-password -n awx -o jsonpath="{.data.password}" | base64 --decode
echo
Step 5: Access AWX
# Get the URL
minikube service awx-service -n awx --url
# Or use port forwarding
kubectl port-forward svc/awx-service 8080:80 -n awx
Open your browser to the URL and login with:
- Username: admin
- Password: (from step 4)
Initial Configuration
1. Create an Organization
Organizations group users, teams, and resources:
- Go to Access → Organizations
- Click Add
- Enter name (e.g., “My Company”)
- Save
2. Add Credentials
Create credentials for SSH access:
- Go to Resources → Credentials
- Click Add
- Select Machine credential type
- Enter SSH username and key/password
- Save
3. Create an Inventory
Add your managed hosts:
- Go to Resources → Inventories
- Click Add → Add inventory
- Name it (e.g., “Production Servers”)
- Save, then click Hosts tab
- Add your server hostnames or IPs
4. Create a Project
Projects link to Git repositories containing playbooks:
- Go to Resources → Projects
- Click Add
- Select Git as source control type
- Enter your repository URL
- Add credentials if private repo
- Save
5. Create a Job Template
Job templates define what playbook to run:
- Go to Resources → Templates
- Click Add → Add job template
- Select your inventory, project, and playbook
- Add credentials
- Save
Running Your First Job
- Navigate to your job template
- Click the Launch button
- Watch the job output in real-time
- Review the results and any failures
Best Practices
- Use Git for playbooks – Always store playbooks in version control
- Limit admin users – Use RBAC to grant minimal permissions
- Regular backups – Back up the PostgreSQL database
- Monitor resources – AWX can consume significant memory
- Update regularly – Keep AWX updated for security fixes
Conclusion
AWX transforms Ansible from a command-line tool into a full automation platform. While it lacks the enterprise support of Ansible Automation Platform, it is an excellent choice for learning, development, and smaller deployments. The web interface makes it easy to collaborate with teams and the scheduling features enable true automation of routine tasks.
Start with AWX to learn the concepts, and consider migrating to Ansible Automation Platform when you need enterprise support and stability guarantees.
Was this article helpful?
About Ramesh Sundararamaiah
Red Hat Certified Architect
Expert in Linux system administration, DevOps automation, and cloud infrastructure. Specializing in Red Hat Enterprise Linux, CentOS, Ubuntu, Docker, Ansible, and enterprise IT solutions.