added semaphore compose and speacial readme
This commit is contained in:
281
semaphore/README.mb
Normal file
281
semaphore/README.mb
Normal file
@@ -0,0 +1,281 @@
|
||||
# AWX Installation Journey (Abandoned in Favor of Semaphore)
|
||||
|
||||
## Overview
|
||||
|
||||
One of my goals for my homelab was learning **Ansible AWX**, the open-source upstream project of Red Hat Ansible Automation Platform.
|
||||
|
||||
Initially I wanted to deploy AWX entirely with Docker since the rest of my homelab is containerized.
|
||||
|
||||
During this project I discovered that AWX has completely moved away from Docker Compose deployments and now officially targets Kubernetes via the AWX Operator.
|
||||
|
||||
Rather than continue patching an obsolete deployment method, I decided to document the investigation and switch to **Semaphore**, which better matches my current Docker-based homelab.
|
||||
|
||||
---
|
||||
|
||||
# Environment
|
||||
|
||||
- Ubuntu 24.04 LTS
|
||||
- Docker Engine
|
||||
- Docker Compose v2
|
||||
- Ansible Core 2.16
|
||||
- Git
|
||||
- GNU Make
|
||||
|
||||
---
|
||||
|
||||
# Attempt 1 – Community Repository
|
||||
|
||||
I first cloned:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/fitbeard/ansible-platform.git
|
||||
```
|
||||
|
||||
After exploring the project, I realized it was **not a Docker deployment of AWX**.
|
||||
|
||||
Instead it deploys:
|
||||
|
||||
- AWX Operator
|
||||
- Automation Platform components
|
||||
- Kubernetes resources
|
||||
|
||||
This was abandoned because my goal was running AWX directly in Docker.
|
||||
|
||||
---
|
||||
|
||||
# Attempt 2 – Official AWX Repository
|
||||
|
||||
I cloned the official project:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/ansible/awx.git
|
||||
```
|
||||
|
||||
Checked out the latest stable release:
|
||||
|
||||
```bash
|
||||
git checkout 24.6.1
|
||||
```
|
||||
|
||||
The repository still contains:
|
||||
|
||||
```
|
||||
tools/docker-compose/
|
||||
```
|
||||
|
||||
which initially appeared to support Docker deployments.
|
||||
|
||||
---
|
||||
|
||||
# Docker Compose Preparation
|
||||
|
||||
Verified:
|
||||
|
||||
- Docker
|
||||
- Docker Compose
|
||||
- Make
|
||||
- Python
|
||||
- Ansible
|
||||
|
||||
All prerequisites were already installed.
|
||||
|
||||
---
|
||||
|
||||
# Issue 1 – Broken docker-compose Binary
|
||||
|
||||
My machine still had an old legacy binary:
|
||||
|
||||
```
|
||||
/usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
Running:
|
||||
|
||||
```bash
|
||||
docker-compose version
|
||||
```
|
||||
|
||||
returned:
|
||||
|
||||
```
|
||||
Not: not found
|
||||
```
|
||||
|
||||
After inspecting the AWX Makefile, I confirmed it actually uses:
|
||||
|
||||
```
|
||||
docker compose
|
||||
```
|
||||
|
||||
instead of the old standalone binary.
|
||||
|
||||
Removing the obsolete binary fixed this issue.
|
||||
|
||||
---
|
||||
|
||||
# Issue 2 – Ansible Galaxy Blocked
|
||||
|
||||
Running:
|
||||
|
||||
```bash
|
||||
make docker-compose
|
||||
```
|
||||
|
||||
failed with:
|
||||
|
||||
```
|
||||
403 Forbidden
|
||||
```
|
||||
|
||||
against:
|
||||
|
||||
```
|
||||
https://galaxy.ansible.com
|
||||
```
|
||||
|
||||
This appears to be due to regional sanctions.
|
||||
|
||||
Fortunately the repository already contained the required collection archives.
|
||||
|
||||
Installed manually:
|
||||
|
||||
```bash
|
||||
ansible-galaxy collection install awx-awx-24.6.1.tar.gz
|
||||
|
||||
ansible-galaxy collection install community-docker-5.2.1.tar.gz
|
||||
|
||||
ansible-galaxy collection install flowerysong-hvault-0.3.0.tar.gz
|
||||
```
|
||||
|
||||
After installation I skipped the Galaxy download step.
|
||||
|
||||
---
|
||||
|
||||
# Issue 3 – Quay.io Blocked
|
||||
|
||||
The next failure occurred while Docker attempted to pull:
|
||||
|
||||
```
|
||||
quay.io/sclorg/postgresql-15-c9s
|
||||
```
|
||||
|
||||
The registry returned:
|
||||
|
||||
```
|
||||
403 Forbidden
|
||||
```
|
||||
|
||||
Testing Quay directly confirmed the registry was inaccessible from my location.
|
||||
|
||||
To continue testing, I modified the generated compose file to use:
|
||||
|
||||
```yaml
|
||||
image: postgres:15
|
||||
```
|
||||
|
||||
and updated the PostgreSQL environment variables accordingly.
|
||||
|
||||
---
|
||||
|
||||
# Issue 4 – Missing AWX Development Image
|
||||
|
||||
The final blocker was:
|
||||
|
||||
```
|
||||
ghcr.io/ansible/awx_devel:HEAD
|
||||
```
|
||||
|
||||
Docker returned:
|
||||
|
||||
```
|
||||
manifest unknown
|
||||
```
|
||||
|
||||
Investigation showed that:
|
||||
|
||||
- `awx_devel` is a development image
|
||||
- versioned tags are no longer published
|
||||
- the Docker Compose workflow expects developers to build the image locally
|
||||
|
||||
using:
|
||||
|
||||
```bash
|
||||
make docker-compose-build
|
||||
```
|
||||
|
||||
rather than pulling a stable image.
|
||||
|
||||
---
|
||||
|
||||
# Conclusion
|
||||
|
||||
At this point it became clear that the Docker Compose deployment is no longer intended as a supported installation method.
|
||||
|
||||
Instead it exists only as a development environment for AWX contributors.
|
||||
|
||||
The officially supported installation method today is:
|
||||
|
||||
```
|
||||
Kubernetes
|
||||
↓
|
||||
AWX Operator
|
||||
↓
|
||||
AWX
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Decision
|
||||
|
||||
Rather than continue patching an obsolete deployment, I decided to stop the project.
|
||||
|
||||
For my Docker-based homelab I installed **Semaphore** instead.
|
||||
|
||||
Semaphore provides:
|
||||
|
||||
- Web UI
|
||||
- Playbook execution
|
||||
- Inventories
|
||||
- SSH key management
|
||||
- Scheduling
|
||||
- Templates
|
||||
|
||||
while remaining simple to deploy with Docker Compose.
|
||||
|
||||
---
|
||||
|
||||
# Lessons Learned
|
||||
|
||||
This project was still valuable because it reinforced several important DevOps skills:
|
||||
|
||||
- Reading project documentation
|
||||
- Inspecting Makefiles
|
||||
- Understanding Ansible collections
|
||||
- Troubleshooting Docker image registries
|
||||
- Working around regional network restrictions
|
||||
- Understanding the evolution of deployment methods
|
||||
- Recognizing when to stop patching legacy software and adopt the supported architecture instead
|
||||
|
||||
---
|
||||
|
||||
# Future Plans
|
||||
|
||||
In the future I plan to learn Kubernetes properly.
|
||||
|
||||
Once comfortable with Kubernetes, I intend to deploy AWX using the officially supported AWX Operator.
|
||||
|
||||
```
|
||||
Ubuntu
|
||||
↓
|
||||
Docker
|
||||
↓
|
||||
k3s
|
||||
↓
|
||||
Helm
|
||||
↓
|
||||
AWX Operator
|
||||
↓
|
||||
AWX
|
||||
```
|
||||
|
||||
Until then, Semaphore satisfies my automation needs while allowing me to continue learning Ansible.
|
||||
17
semaphore/docker-compose.yml
Normal file
17
semaphore/docker-compose.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
services:
|
||||
semaphore:
|
||||
image: semaphoreui/semaphore:latest
|
||||
container_name: semaphore
|
||||
ports:
|
||||
- "3001:3000"
|
||||
environment:
|
||||
SEMAPHORE_DB_DIALECT: sqlite
|
||||
SEMAPHORE_DB_PATH: /var/lib/semaphore/database.db
|
||||
SEMAPHORE_ADMIN: admin
|
||||
SEMAPHORE_ADMIN_PASSWORD: choose a passwor or use .env (better )
|
||||
SEMAPHORE_ADMIN_EMAIL: rezay5639@gmail.com
|
||||
SEMAPHORE_ADMIN_NAME: Admin
|
||||
SEMAPHORE_SECRET_KEY: <your-long-secret-key>
|
||||
volumes:
|
||||
- ./data:/var/lib/semaphore
|
||||
restart: unless-stopped
|
||||
Reference in New Issue
Block a user