Restructure repo: group Docker stacks under docker-compose/, add ansible/ playbooks and roles
This commit is contained in:
18
docker-compose/dockscope/docker-compose.yml
Normal file
18
docker-compose/dockscope/docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
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: rezayaghobi1386
|
||||
SEMAPHORE_ADMIN_EMAIL: rezay5639@gmail.com
|
||||
SEMAPHORE_ADMIN_NAME: Admin
|
||||
SEMAPHORE_SECRET_KEY: cc4b3a5a90d31b963bee48a9dee089472bef5e0461f934db7891fc68161d36f7
|
||||
volumes:
|
||||
- ./data:/var/lib/semaphore
|
||||
- ./playbooks:/playbooks
|
||||
restart: unless-stopped
|
||||
19
docker-compose/filebrowser/docker-compose.yml
Normal file
19
docker-compose/filebrowser/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
services:
|
||||
filebrowser:
|
||||
image: filebrowser/filebrowser:latest
|
||||
container_name: filebrowser
|
||||
ports:
|
||||
- "8085:80"
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- /srv/samba/games:/games
|
||||
- /mnt/storage:/storage
|
||||
- /home/rezayaghobi/docker/filebrowser/config:/config
|
||||
- filebrowser_db:/database
|
||||
- filebrowser_srv:/srv
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
filebrowser_db:
|
||||
filebrowser_srv:
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
services:
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8081:8080"
|
||||
- "6881:6881"
|
||||
- "6881:6881/udp"
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Asia/Baku
|
||||
- WEBUI_PORT=8080
|
||||
volumes:
|
||||
- ./qbittorrent:/config
|
||||
- /mnt/storage/films/downloads:/downloads
|
||||
networks:
|
||||
- mediastack
|
||||
|
||||
networks:
|
||||
mediastack:
|
||||
external: true
|
||||
12
docker-compose/mediastack/plex/docker-compose.yml
Normal file
12
docker-compose/mediastack/plex/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
services:
|
||||
plex:
|
||||
image: lscr.io/linuxserver/plex:latest
|
||||
container_name: plex
|
||||
network_mode: host
|
||||
environment:
|
||||
- TZ=Asia/Tehran
|
||||
- PLEX_CLAIM=claim-uRK14oDz86FsyFgNyaBh
|
||||
volumes:
|
||||
- /home/rezayaghobi/docker/plex:/config
|
||||
- /mnt/storage:/media
|
||||
restart: unless-stopped
|
||||
19
docker-compose/mediastack/prowlarr/docker-compose.yml
Normal file
19
docker-compose/mediastack/prowlarr/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
services:
|
||||
prowlarr:
|
||||
image: lscr.io/linuxserver/prowlarr:latest
|
||||
container_name: prowlarr
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9696:9696"
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Asia/baku
|
||||
volumes:
|
||||
- ./config:/config
|
||||
networks:
|
||||
- mediastack
|
||||
|
||||
networks:
|
||||
mediastack:
|
||||
external: true
|
||||
22
docker-compose/mediastack/radarr/docker-compose.yml
Normal file
22
docker-compose/mediastack/radarr/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
services:
|
||||
radarr:
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
container_name: radarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Asia/Baku
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /mnt/storage/films:/media
|
||||
- /mnt/storage/films/downloads:/downloads
|
||||
|
||||
ports:
|
||||
- 7878:7878
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- mediastack
|
||||
|
||||
networks:
|
||||
mediastack:
|
||||
external: true
|
||||
22
docker-compose/mediastack/sonarr/docker-compose.yml
Normal file
22
docker-compose/mediastack/sonarr/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
services:
|
||||
sonarr:
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: sonarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Asia/Baku
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /mnt/storage/films:/media
|
||||
- /mnt/storage/films/downloads:/downloads
|
||||
|
||||
ports:
|
||||
- 8989:8989
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- mediastack
|
||||
|
||||
networks:
|
||||
mediastack:
|
||||
external: true
|
||||
24
docker-compose/mediastack/whisparr/docker-compose.yml
Normal file
24
docker-compose/mediastack/whisparr/docker-compose.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
whisparr:
|
||||
image: ghcr.io/hotio/whisparr:v3
|
||||
container_name: whisparr
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "6969:6969"
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
- TZ=Asia/Baku
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /mnt/storage/films/downloads:/downloads
|
||||
- /mnt/storage/adult:/data/whisparr
|
||||
- /mnt/storage/films/downloads/whisparr:/downloads/whisparr # ADD THIS
|
||||
|
||||
networks:
|
||||
- mediastack
|
||||
|
||||
networks:
|
||||
mediastack:
|
||||
external: true
|
||||
16
docker-compose/minecraft/docker-compose.yml
Normal file
16
docker-compose/minecraft/docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
minecraft:
|
||||
image: itzg/minecraft-server:latest
|
||||
container_name: minecraft
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: "CUSTOM"
|
||||
CUSTOM_SERVER: "paper-1.21.11-117.jar"
|
||||
MEMORY: "2G"
|
||||
DISABLE_DOWNLOADS: "true"
|
||||
volumes:
|
||||
- /home/rezayaghobi/docker/minecraft/server:/data
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9090:9090"
|
||||
|
||||
volumes:
|
||||
- ./prometheus:/etc/prometheus:ro
|
||||
- ./data/prometheus:/prometheus
|
||||
|
||||
command:
|
||||
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||
- "--storage.tsdb.path=/prometheus"
|
||||
|
||||
networks:
|
||||
- monitoring
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- ./grafana/data:/var/lib/grafana
|
||||
networks:
|
||||
- monitoring
|
||||
|
||||
node_exporter:
|
||||
image: prom/node-exporter:latest
|
||||
container_name: node-exporter
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9100:9100"
|
||||
volumes:
|
||||
- /proc:/host/proc:ro
|
||||
- /sys:/host/sys:ro
|
||||
- /:/rootfs:ro
|
||||
networks:
|
||||
- monitoring
|
||||
|
||||
cadvisor:
|
||||
image: ghcr.io/google/cadvisor:latest
|
||||
container_name: cadvisor
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:rw
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker/:/var/lib/docker:ro
|
||||
networks:
|
||||
- monitoring
|
||||
|
||||
networks:
|
||||
monitoring:
|
||||
driver: bridge
|
||||
|
||||
|
||||
|
||||
|
||||
8
docker-compose/n8n/.env.example
Normal file
8
docker-compose/n8n/.env.example
Normal file
@@ -0,0 +1,8 @@
|
||||
POSTGRES_USER=n8n
|
||||
POSTGRES_PASSWORD=change-me
|
||||
POSTGRES_DB=n8n
|
||||
N8N_BASIC_AUTH_USER=admin
|
||||
N8N_BASIC_AUTH_PASSWORD=change-me
|
||||
N8N_ENCRYPTION_KEY=change-me-to-a-random-32-char-string
|
||||
N8N_HOST=192.168.100.6
|
||||
TZ=Asia/Tehran
|
||||
58
docker-compose/n8n/docker-compose.yaml
Normal file
58
docker-compose/n8n/docker-compose.yaml
Normal file
@@ -0,0 +1,58 @@
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:17
|
||||
container_name: n8n-postgres
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
volumes:
|
||||
- ./postgres:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
n8n:
|
||||
image: n8nio/n8n:latest
|
||||
container_name: n8n
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
environment:
|
||||
DB_TYPE: postgresdb
|
||||
DB_POSTGRESDB_HOST: postgres
|
||||
DB_POSTGRESDB_PORT: 5432
|
||||
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
|
||||
DB_POSTGRESDB_USER: ${POSTGRES_USER}
|
||||
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
|
||||
N8N_BASIC_AUTH_ACTIVE: true
|
||||
N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER}
|
||||
N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD}
|
||||
|
||||
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
|
||||
|
||||
N8N_SECURE_COOKIE: false
|
||||
N8N_HOST: ${N8N_HOST}
|
||||
N8N_PORT: 5678
|
||||
N8N_PROTOCOL: http
|
||||
|
||||
TZ: ${TZ}
|
||||
|
||||
ports:
|
||||
- "5678:5678"
|
||||
|
||||
volumes:
|
||||
- ./n8n-data:/home/node/.n8n
|
||||
- /mnt/storage:/mnt/storage
|
||||
- /mnt/windows-video:/mnt/windows-video
|
||||
15
docker-compose/nginx-proxy-manager/compose.yaml
Normal file
15
docker-compose/nginx-proxy-manager/compose.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
services:
|
||||
nginx-proxy-manager:
|
||||
image: 'jc21/nginx-proxy-manager:latest'
|
||||
container_name: npm
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '80:80'
|
||||
- '443:443'
|
||||
- '81:81'
|
||||
volumes:
|
||||
- npm-data:/data
|
||||
- npm-letsencrypt:/etc/letsencrypt
|
||||
volumes:
|
||||
npm-data:
|
||||
npm-letsencrypt:
|
||||
23
docker-compose/openhands/compose.yaml
Normal file
23
docker-compose/openhands/compose.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
services:
|
||||
agent-canvas:
|
||||
image: ghcr.io/openhands/agent-canvas:latest
|
||||
container_name: agent-canvas
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- openhands-data:/home/openhands/.openhands
|
||||
- ./projects:/home/openhands/workspace/project
|
||||
stdin_open: true
|
||||
tty: true
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
container_name: ollama
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "11434:11434"
|
||||
volumes:
|
||||
- ollama-data:/root/.ollama
|
||||
volumes:
|
||||
openhands-data:
|
||||
ollama-data:
|
||||
1
docker-compose/pihole/.env.example
Normal file
1
docker-compose/pihole/.env.example
Normal file
@@ -0,0 +1 @@
|
||||
PIHOLE_WEBPASSWORD=change-me
|
||||
14
docker-compose/pihole/docker-compose.yml
Normal file
14
docker-compose/pihole/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
pihole:
|
||||
container_name: pihole
|
||||
image: ghcr.io/pi-hole/pihole:latest
|
||||
network_mode: host
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
TZ: "Asia/Tehran"
|
||||
WEBPASSWORD: ${PIHOLE_WEBPASSWORD}
|
||||
volumes:
|
||||
- ./etc-pihole:/etc/pihole
|
||||
- ./etc-dnsmasq.d:/etc/dnsmasq.d
|
||||
restart: unless-stopped
|
||||
10
docker-compose/portainer/docker-compose.yml
Normal file
10
docker-compose/portainer/docker-compose.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:latest
|
||||
container_name: portainer
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /home/rezayaghobi/docker/portainer/data:/data
|
||||
2
docker-compose/samba/.env.example
Normal file
2
docker-compose/samba/.env.example
Normal file
@@ -0,0 +1,2 @@
|
||||
# Format: username;password
|
||||
SAMBA_USER=username;change-me
|
||||
20
docker-compose/samba/docker-compose.yml
Normal file
20
docker-compose/samba/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
services:
|
||||
samba:
|
||||
image: dperson/samba:latest
|
||||
container_name: samba
|
||||
network_mode: host
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- TZ=Asia/Tehran
|
||||
- USER=${SAMBA_USER}
|
||||
- NMBD=false
|
||||
- SMBD=true
|
||||
- WSDD2=false
|
||||
- AVAHI=false
|
||||
- CONFIGFILE=/etc/samba/smb.conf
|
||||
volumes:
|
||||
- /home/rezayaghobi/docker/samba/config/smb.conf:/etc/samba/smb.conf
|
||||
- /mnt/storage:/mount/main
|
||||
- /mnt/hdd3:/mount/game_backups
|
||||
restart: unless-stopped
|
||||
281
docker-compose/semaphore/README.md
Normal file
281
docker-compose/semaphore/README.md
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
docker-compose/semaphore/docker-compose.yml
Normal file
17
docker-compose/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
|
||||
12
docker-compose/sentinel/docker-compose.yml
Normal file
12
docker-compose/sentinel/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
services:
|
||||
sentinel:
|
||||
image: scyto/sentinel:latest
|
||||
container_name: sentinel
|
||||
privileged: true
|
||||
volumes:
|
||||
- /dev:/dev
|
||||
- /run/udev:/run/udev:ro
|
||||
ports:
|
||||
- "8090:8090"
|
||||
restart: unless-stopped
|
||||
|
||||
11
docker-compose/smartctl/docker-compose.yml
Normal file
11
docker-compose/smartctl/docker-compose.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
services:
|
||||
smartctl_exporter:
|
||||
image: ghcr.io/prometheus-community/smartctl_exporter:latest
|
||||
container_name: smartctl_exporter
|
||||
privileged: true
|
||||
volumes:
|
||||
- /dev:/dev
|
||||
- /run/udev:/run/udev:ro
|
||||
ports:
|
||||
- "9633:9633"
|
||||
restart: unless-stopped
|
||||
Reference in New Issue
Block a user