semaphore/tasks/install.yaml
2026-05-15 12:46:46 +00:00

117 lines
2.8 KiB
YAML

---
# create directories
- name: "create semaphore directories"
ansible.builtin.file:
path: "{{ item }}"
owner: "1001"
group: "1001"
state: "directory"
mode: "0775"
loop:
- "/mnt/mitogen"
- "/mnt/semaphore"
- "/mnt/semaphore/config"
- "/mnt/semaphore/data"
- "/mnt/semaphore/ssh"
- "/mnt/semaphore/tmp"
# semaphore ssh config
- name: "ssh config"
ansible.builtin.template:
src: "templates/semaphore/config.j2"
dest: "/mnt/semaphore/ssh/config"
owner: "1001"
group: "1001"
mode: "0640"
# semaphore ansible ssh key
- name: "ansible ssh config"
ansible.builtin.template:
src: "templates/semaphore/ansible.key.j2"
dest: "/mnt/semaphore/ssh/ansible.key"
owner: "1001"
group: "1001"
mode: "0400"
# install mitogen
- name: "install mitogen"
# tell git to ignore certs
environment:
GIT_SSL_NO_VERIFY: "true"
# git checkout
ansible.builtin.git:
version: "v{{ mitogen_version }}"
dest: "/mnt/mitogen"
repo: "https://github.com/mitogen-hq/mitogen"
# fix ownership
- name: "set mitogen ownership"
ansible.builtin.file:
path: "/mnt/mitogen"
owner: "1001"
group: "1001"
recurse: true
changed_when: false
# run semaphore
- name: "run semaphore"
community.docker.docker_container:
# container_default_behavior
auto_remove: "no"
container_default_behavior: "no_defaults"
detach: "yes"
init: "no"
interactive: "no"
log_driver: "json-file"
log_options:
max-size: "5m"
max-file: "3"
memory: "0"
paused: "no"
privileged: "no"
pull: "always"
read_only: "no"
state: "started"
tty: "no"
# semaphore
name: "semaphore-app"
image: "cr.simoncor.net/dockerhub/semaphoreui/semaphore:v2.18.3"
image_name_mismatch: "recreate"
restart_policy: "unless-stopped"
network_mode: "host"
volumes:
- "/mnt/semaphore/ssh/config:/home/semaphore/.ssh/config"
- "/mnt/semaphore/ssh/ansible.key:/home/semaphore/.ssh/ansible.key"
- "/mnt/semaphore/config:/etc/semaphore"
- "/mnt/semaphore/data:/var/lib/semaphore"
- "/mnt/semaphore/tmp:/tmp/semaphore"
- "/mnt/mitogen:/tmp/mitogen"
ports:
- "3000:3000/tcp"
env:
# semaphore
SEMAPHORE_DB_DIALECT: "sqlite"
SEMAPHORE_TOTP_ALLOW_RECOVERY: "True"
SEMAPHORE_TOTP_ENABLED: "True"
SEMAPHORE_SCHEDULE_TIMEZONE: "Europe/Amsterdam"
# semaphore email
SEMAPHORE_EMAIL_SENDER: "{{ semaphore_email_sender }}"
SEMAPHORE_EMAIL_USERNAME: "{{ semaphore_email_username }}"
SEMAPHORE_EMAIL_HOST: "{{ semaphore_email_host }}"
SEMAPHORE_EMAIL_PORT: "{{ semaphore_email_port }}"
SEMAPHORE_EMAIL_PASSWORD: "{{ semaphore_email_password }}"
SEMAPHORE_EMAIL_SECURE: "True"
SEMAPHORE_EMAIL_TLS: "True"
# global
TZ: "{{ timezone }}"