What is Ansible AWX?

Ansible AWX is the open-source, web-based UI and REST API for Ansible, a widely used IT automation and configuration management tool. Maintained by Red Hat, AWX is the upstream project for Red Hat Ansible Automation Platform, offering a visual interface, role-based access control, job scheduling, and logging to enhance and centralize Ansible’s capabilities.

Running AWX on Debian 12 provides a robust, secure, and stable platform for managing infrastructure automation, especially in environments where a graphical interface or multi-user access is needed.


Key Features of Ansible AWX

Web-Based Interface

  • Manage playbooks, inventories, and job templates through an intuitive UI.
  • Visual dashboards for job monitoring and statistics.

Credential Management

  • Store and manage SSH keys, API tokens, cloud credentials securely.
  • Supports third-party integrations like GitHub, AWS, and GCP.

Inventory and Project Management

  • Use static or dynamic inventories (e.g., AWS EC2, VMware).
  • Link Git repositories to sync playbooks and roles automatically.

Job Scheduling

  • Execute playbooks on a defined schedule.
  • Automate maintenance tasks or deployments with precise timing.

Workflow Automation

  • Create complex workflows that connect multiple job templates.
  • Include conditional logic, approvals, and parallel tasks.

Role-Based Access Control (RBAC)

  • Assign specific permissions to users and teams.
  • Control access to projects, inventories, credentials, and job templates.

Logging and Auditing

  • Track every user action and job run with timestamps and output.
  • View logs in the UI or export to external logging systems.

Why Use AWX on Debian 12?

Debian 12 provides a reliable and minimal base system ideal for deploying AWX. Although Red Hat officially supports AWX on RHEL-based systems, Debian is fully capable of running AWX using Docker or Kubernetes with minor adjustments.

Benefits of using AWX on Debian 12 include:

  • Long-term support and security updates.
  • Clean, stable package ecosystem.
  • Ideal for hosting in VPS or cloud environments.

AWX Architecture Overview

AWX is designed as a containerized application with components like:

  • Web UI and API
  • Task engine to execute Ansible jobs
  • PostgreSQL database
  • Redis for caching and messaging
  • Optional Kubernetes deployment via AWX Operator

Common Use Cases

  • Centralized control of Ansible playbooks and environments
  • Collaborative automation with user access control
  • Scheduled infrastructure updates or software deployments
  • Integration with CI/CD pipelines
  • Management of cloud infrastructure via Ansible modules

Ansible AWX vs Ansible CLI

FeatureAnsible CLIAnsible AWX
User InterfaceCommand lineWeb UI & REST API
Multi-user SupportNoYes
RBACNoYes
Job SchedulingManual (cron)Built-in
Inventory ManagementFiles/CLIWeb + Dynamic
Workflow AutomationManualVisual workflows
Logging and AuditingManualCentralized and accessible

System Requirements for AWX on Debian 12

ComponentRequirement
OSDebian 12 (Bookworm)
CPU2+ cores (4 recommended)
RAM4 GB minimum (8 GB+ recommended)
Disk Space10 GB or more
Container ToolDocker or Podman
AnsibleInstalled for local playbook development

Installation Methods on Debian 12

Since AWX is container-based, it can be installed in two main ways:

1. Docker Compose Deployment

  • Suitable for small teams and test environments
  • Clone the AWX GitHub repository
  • Use Docker Compose to deploy the application stack

2. Kubernetes + AWX Operator

  • Recommended for production
  • Requires a Kubernetes cluster (e.g., Minikube, MicroK8s)
  • Managed via the AWX Operator for lifecycle tasks

Advantages of Using AWX on Debian 12

  • Open-source and free to use
  • Centralized interface for managing automation
  • Lightweight and resource-efficient on Debian
  • Secure credential and secrets management
  • Integration-ready via API and Git hooks

Limitations

  • Not officially supported on Debian (documentation focuses on CentOS/RHEL)
  • Initial setup requires knowledge of Docker or Kubernetes
  • Resource usage is higher than CLI-based Ansible alone
  • Some learning curve for RBAC and workflow configuration
  • Upgrade and backup procedures are more complex than traditional applications

Ansible AWX on Debian 12 is a powerful solution for organizations looking to manage and scale their Ansible automation workflows through a centralized, web-based interface. It adds significant value to Ansible by enabling scheduling, access control, collaboration, and monitoring.

While deployment requires container tools and some configuration, AWX on Debian is highly suitable for DevOps teams, system administrators, and infrastructure automation engineers seeking a free and flexible automation platform.

Step 1: Create a Debian 12 VPS on Shape.Host

How to deploy a server on Shape.Host:

Go to https://shape.host and log in or create an account.

Click “Create”.

Choose Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Choose your preferred server location.

Shape.host instance form with the data center location selector highlighted.

Select Debian 12 (64-bit).

Pick a plan with at least 2 CPUs, 4 GB RAM, and 20 GB SSD.

Shape.host instance form with the operating system image selector highlighted.

Select a data center near you and click Create Instance.

Shape.host instance form with the Create Instance button highlighted.

Find your instance’s IP address under the Resources section and use it to access your server.

Shape.host Resources dashboard with the server IP address highlighted.

Step 2: Connect to Your Server

ssh root@your_server_ip

This logs you into your server as root so you can install everything.


Step 3: Update the package list

apt update

Makes sure your server knows about the latest available software.

Terminal showing APT package management commands and output.

Step 4: Install needed tools

apt-get install apt-transport-https ca-certificates software-properties-common unzip gnupg2 curl git

These are general tools needed for downloading, verifying, and installing other software.

Terminal showing APT package management commands and output.

Step 5: Edit sources file (optional)

nano /etc/apt/sources.list

Add the following line:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Terminal showing the GNU nano editor and configuration text.

Step 6: Add the Ansible GPG key

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

This allows Debian to trust and install packages from the Ansible repository.


Step 7: Update again

apt-get update -y

Reloads the package list, now including Ansible’s source.

Terminal showing APT package management commands and output.

Step 8: Install Ansible

apt-get install ansible

Installs Ansible, the core automation tool we’ll use with AWX.

Terminal showing APT package management commands and output.

Step 9: Check Ansible version

ansible --version

Just to confirm that Ansible was installed correctly.

Terminal showing python commands or output during Check Ansible version.

Step 10: Add Docker’s GPG key

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

This lets your system verify that Docker packages are legit.


Step 11: Add Docker’s official repository

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

Adds Docker’s software source to your system.

Terminal showing curl commands or output during Add Dockers official repository.

Step 12: Update again to include Docker packages

apt-get update -y

Loads the new Docker packages from the added repository.

Terminal showing APT package management commands and output.

Step 13: Install Docker

apt-get install docker-ce

Installs Docker so you can run containers.

Terminal showing APT package management commands and output.

Step 14: Check Docker status

systemctl status docker

Shows if Docker is running correctly.

Terminal showing systemd service management commands or output.

Step 15: Download Docker Compose

wget https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64

Gets the Docker Compose binary.

Terminal showing file download commands and transfer output.

Step 16: Move Docker Compose to a system location

mv docker-compose-linux-x86_64 /usr/bin/docker-compose

Makes Docker Compose accessible as a command.


Step 17: Make Docker Compose executable

chmod +x /usr/bin/docker-compose

Gives it permission to run.


Step 18: Check Docker Compose version

docker-compose version

Verifies it’s installed properly.

Terminal showing the installed Docker Compose version.

Step 19: Add Node.js setup script

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -

Prepares your system to install Node.js 20.

Terminal showing APT package management commands and output.

Step 20: Install Node.js

apt install nodejs

Installs Node.js and npm.

Terminal showing APT package management commands and output.

Step 21: Check Node and npm versions

node -v
npm -v

Confirms they installed successfully.

Terminal showing Node.js or npm version output.

Step 22: Update npm

npm install npm --global

Gets the latest npm version.

Terminal showing npm commands or output during Update npm.

Step 23: Install Python pip, Git, and pwgen

apt-get install python3-pip git pwgen

These are required for AWX. pwgen will help you create a strong secret key later.

Terminal showing npm commands or output during Install Python pip, Git, and pwgen.

Step 24: Install Docker Compose plugin

apt install docker-compose-plugin

This gives you the modern plugin-based Docker Compose (optional but helpful).

Terminal showing APT package management commands and output.

Step 25: Download AWX source code

wget https://github.com/ansible/awx/archive/refs/tags/17.1.0.zip

This gets AWX version 17.1.0 from GitHub.

Terminal showing file download commands and transfer output.

Step 26: Unzip the AWX archive

unzip 17.1.0.zip

Extracts the installer and files.


Step 27: Go to the installer folder

cd awx-17.1.0/installer/

This is where the install.yml playbook and inventory config file live.


Step 28: Generate a secret key

pwgen -N 1 -s 30

Generates a secure key for AWX to use internally. Save this for the next step.

Terminal showing file and directory setup commands.

Step 29: Edit the inventory file

nano inventory

Set your admin password and secret key like this:

admin_password=YourPassword
secret_key=TheKeyYouGenerated

You can also change other settings here, like ports and database info.

Terminal showing application configuration fields.

Step 30: Run the AWX installer

ansible-playbook -i inventory install.yml

This command starts the full AWX setup using Docker. It will take a few minutes.

Terminal showing application configuration fields.

Step 31: Open AWX in your browser

Once the setup finishes, go to:

http://your_server_ip

Login with:

  • Username: admin
  • Password: the one you set in the inventory file
AWX sign-in form.

You’ve installed Ansible AWX on Debian 12, using Docker and Ansible exactly as planned. Now you can manage playbooks, inventories, credentials, and more through a nice web interface.

Need a fast, reliable server for AWX?
Check out Shape.Host — perfect for DevOps tools, automation, and scalable projects.