Ansible deployed via boilerplates and playbooks

This commit is contained in:
2026-03-22 18:15:55 -05:00
parent 836ef66cf0
commit 307413f3f2
16 changed files with 760 additions and 274 deletions

View File

@@ -0,0 +1,3 @@
DATABASE_PASSWORD=cVMGmtkCcOsMReHi99GHBIWNmNTUQPfZ
SEMAPHORE_ADMIN_PASSWORD=4U+gEcm0aUby+5q5
SEMAPHORE_ACCESS_KEY_ENCRYPTION=6APgfDAgWtqg0XBXPKPyG7N3evwksB6u

View File

@@ -0,0 +1,44 @@
services:
semaphore:
image: docker.io/semaphoreui/semaphore:v2.17.2
restart: unless-stopped
environment:
- SEMAPHORE_DB_DIALECT=mysql
- SEMAPHORE_DB_HOST=semaphore_db
- SEMAPHORE_DB=semaphore
- SEMAPHORE_DB_USER=semaphore
- SEMAPHORE_DB_PASS=${DATABASE_PASSWORD}
- SEMAPHORE_ADMIN=admin
- SEMAPHORE_ADMIN_NAME=Administrator
- SEMAPHORE_ADMIN_EMAIL=ryan.blundon@protonmail.com
- SEMAPHORE_ADMIN_PASSWORD=${SEMAPHORE_ADMIN_PASSWORD}
- SEMAPHORE_PLAYBOOK_PATH=/tmp/semaphore/
- SEMAPHORE_ACCESS_KEY_ENCRYPTION=${SEMAPHORE_ACCESS_KEY_ENCRYPTION}
- ANSIBLE_HOST_KEY_CHECKING=False
networks:
- semaphore_backend
ports:
- "3000:3000"
depends_on:
- semaphore_db
semaphore_db:
image: docker.io/library/mysql:8.1
restart: unless-stopped
environment:
- MYSQL_USER=semaphore
- MYSQL_PASSWORD=${DATABASE_PASSWORD}
- MYSQL_DATABASE=semaphore
- MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD}
networks:
- semaphore_backend
volumes:
- semaphore_db:/var/lib/mysql
volumes:
semaphore_db:
driver: local
networks:
semaphore_backend:
driver: bridge

View File

@@ -0,0 +1,107 @@
{
"environments": [
{
"env": "{}",
"json": "{}",
"name": "Production"
}
],
"integration_aliases": [],
"integrations": [],
"inventories": [
{
"become_key": "wed-ssh-key",
"inventory": "ansible/inventory.yml",
"name": "foundation",
"ssh_key": "wed-ssh-key",
"type": "file"
}
],
"keys": [
{
"name": "git-public",
"owner": "",
"type": "none"
},
{
"name": "wed-ssh-key",
"owner": "",
"type": "ssh"
},
{
"name": "ansible-vault-password",
"owner": "",
"type": "login_password"
}
],
"meta": {
"alert": false,
"max_parallel_tasks": 0,
"name": "mk-labs",
"type": ""
},
"repositories": [
{
"git_branch": "main",
"git_url": "https://github.com/rblundon/homelab.git",
"name": "homelab",
"ssh_key": "git-public"
}
],
"roles": [],
"schedules": [],
"secret_storages": [],
"templates": [
{
"allow_override_args_in_task": true,
"autorun": false,
"description": "Post-provisioning OS baseline: common role, DNS registration, NetBox status update",
"environment": "Production",
"inventory": "foundation",
"name": "day0-baseline",
"playbook": "ansible/playbooks/day0_baseline.yml",
"repository": "homelab",
"suppress_success_alerts": false,
"survey_vars": [],
"type": "task",
"vault_key": "ansible-vault-password"
},
{
"allow_override_args_in_task": true,
"autorun": false,
"description": "Deploy Semaphore on imagineering",
"environment": "Production",
"inventory": "foundation",
"name": "day1-deploy-semaphore",
"playbook": "ansible/playbooks/day1_deploy_semaphore.yml",
"repository": "homelab",
"suppress_success_alerts": false,
"survey_vars": [],
"type": "task",
"vault_key": "ansible-vault-password"
},
{
"allow_override_args_in_task": false,
"autorun": false,
"description": "Sync Traefik dynamic configs and create DNS CNAMEs for all services",
"environment": "Production",
"inventory": "foundation",
"name": "add-service-route",
"playbook": "ansible/playbooks/add_service_route.yml",
"repository": "homelab",
"suppress_success_alerts": false,
"survey_vars": [],
"type": "task",
"vault_key": "ansible-vault-password"
}
],
"views": [
{
"hidden": false,
"position": 0,
"sort_reverse": false,
"title": "All",
"type": "all"
}
]
}

View File

@@ -0,0 +1,17 @@
http:
routers:
semaphore:
rule: "Host(`semaphore.local.mk-labs.cloud`)"
entryPoints:
- websecure
service: semaphore
tls:
certResolver: cloudflare
middlewares:
- security-headers
services:
semaphore:
loadBalancer:
servers:
- url: "http://imagineering.local.mk-labs.cloud:3000"