forked from jakub/ansible
66 lines
2.0 KiB
YAML
66 lines
2.0 KiB
YAML
# update_semaphore.yml
|
|
|
|
- name: Update Semaphore on VM via Proxmox
|
|
hosts: linux_servers
|
|
gather_facts: false
|
|
become: true
|
|
become_user: root
|
|
become_method: sudo
|
|
|
|
vars:
|
|
# --- Connection to VM (provided by Semaphore env vars) ---
|
|
vm_ip: "{{ lookup('env', 'VM_IP') }}" # IP vm-portainer
|
|
vm_user: "{{ lookup('env', 'VM_USER') }}"
|
|
vm_pass: "{{ lookup('env', 'VM_PASS') }}"
|
|
use_sudo: false
|
|
|
|
# --- Debug mode (controlled via Semaphore variable) ---
|
|
DEBUG: "{{ lookup('env', 'DEBUG') | default(0) | int }}"
|
|
|
|
# --- Semaphore specifics ---
|
|
semaphore_project: "semaphore"
|
|
semaphore_compose_file: "/data/compose/semaphore/docker-compose.yml"
|
|
semaphore_service: "semaphore"
|
|
|
|
tasks:
|
|
- name: Ensure sshpass is installed (for password-based SSH) # English comments
|
|
ansible.builtin.apt:
|
|
name: sshpass
|
|
state: present
|
|
update_cache: yes
|
|
|
|
- name: Run Semaphore self-update on VM in background (nohup)
|
|
ansible.builtin.command:
|
|
argv:
|
|
- sshpass
|
|
- -e
|
|
- ssh
|
|
- -o
|
|
- StrictHostKeyChecking=no
|
|
- -o
|
|
- ConnectTimeout=15
|
|
- "{{ vm_user }}@{{ vm_ip }}"
|
|
- bash
|
|
- -lc
|
|
- |
|
|
nohup bash -c '
|
|
unalias docker 2>/dev/null || true
|
|
DOCKER_CLI_HINTS=0 docker compose \
|
|
-p {{ semaphore_project }} \
|
|
-f {{ semaphore_compose_file }} \
|
|
up -d --no-deps --force-recreate --pull always {{ semaphore_service }}
|
|
' >/dev/null 2>&1 &
|
|
environment:
|
|
SSHPASS: "{{ vm_pass }}"
|
|
register: semaphore_update
|
|
changed_when: false
|
|
no_log: "{{ DEBUG == 0 }}"
|
|
|
|
- name: Show result of Semaphore self-update (debug)
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
RC: {{ semaphore_update.rc }}
|
|
STDOUT: {{ (semaphore_update.stdout | default('')).strip() }}
|
|
STDERR: {{ (semaphore_update.stderr | default('')).strip() }}
|
|
when: DEBUG == 1
|