How to Install and Configure AWX (Open Source Ansible Tower) on Ubuntu 22.04 LTS

Setting up AWX (the open-source version of Ansible Tower) can greatly enhance the automation and orchestration of your infrastructure management processes. AWX provides a user-friendly interface and powerful tools to manage your Ansible playbooks, making it ideal for DevOps teams who require a robust, scalable solution for handling complex workflows.


Prerequisites

Before beginning, ensure you have:

  • Administrative access to your Ubuntu 22.04 LTS server.
  • Docker installed and running.
  • A basic understanding of Linux commands and Ansible concepts.

Technical Implementation

Step 1: Install Docker

Docker is essential for running AWX containers. If Docker is not already installed, use the following commands:

sudo apt update && sudo apt install docker.io -y

Start and enable Docker to run on boot:

sudo systemctl start docker
sudo systemctl enable docker

Verify the Docker installation:

docker --version

Step 2: Install Docker Compose

Docker Compose simplifies the process of managing multi-container applications. Install Docker Compose using:

sudo apt install docker-compose -y

Step 3: Install PostgreSQL

AWX requires a database for data storage. Install PostgreSQL using the following commands:

sudo apt update && sudo apt install postgresql postgresql-contrib -y

Create a database and user for AWX:

sudo -u postgres createuser awx
sudo -u postgres createdb awx_db
sudo -u postgres psql -c "ALTER USER awx WITH ENCRYPTED PASSWORD 'yourpassword';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE awx_db TO awx;"

Step 4: Clone the AWX Repository

Clone the AWX installer repository to your server:

git clone https://github.com/ansible/awx-operator.git
cd awx-operator

Step 5: Deploy AWX Using Docker Compose

Create a docker-compose.yml file for AWX:

version: '3'
services:
  awx:
    image: ansible/awx:latest
    container_name: awx
    ports:
      - "8080:80"
    environment:
      - SECRET_KEY=your_secret_key
      - DATABASE_NAME=awx_db
      - DATABASE_USER=awx
      - DATABASE_PASSWORD=yourpassword
      - DATABASE_HOST=postgres
  postgres:
    image: postgres:13
    container_name: postgres
    environment:
      POSTGRES_USER: awx
      POSTGRES_PASSWORD: yourpassword
      POSTGRES_DB: awx_db
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Start AWX with Docker Compose:

sudo docker-compose up -d

Step 6: Access the AWX Web Interface

Once AWX is running, access the web interface by navigating to http://your-server-ip:8080. Log in using the default credentials (admin/admin) and update the password immediately for security purposes.


Best Practices

  • Use Secure Credentials: Ensure strong, unique passwords for the AWX admin user and database.
  • Enable HTTPS: Use a reverse proxy like NGINX to secure connections with SSL/TLS.
  • Implement RBAC: Configure role-based access control to manage user permissions effectively.
  • Regular Backups: Schedule regular backups of the AWX database to safeguard against data loss.

Troubleshooting

Common Issues:

  • Database Connection Errors: Verify that PostgreSQL is running and that the credentials in docker-compose.yml match those in PostgreSQL.
  • Port Conflicts: Ensure that port 8080 is not being used by another service on your server.

For more detailed troubleshooting, refer to the AWX GitHub repository and community forums.


Conclusion

Congratulations! You have successfully installed and configured AWX on Ubuntu 22.04 LTS. With this setup, you can now manage and automate your Ansible tasks more efficiently. AWX’s comprehensive interface and capabilities make it an essential tool for DevOps teams looking to streamline their infrastructure management.

Next Steps:

  • Explore AWX’s scheduling features to automate playbook runs.
  • Integrate AWX into your CI/CD pipeline for end-to-end automation.
  • Dive deeper into custom job templates and access control settings to optimize your workflow.