diff --git a/ansible/roles/semaphore/tasks/main.yml b/ansible/roles/semaphore/tasks/main.yml index 8ce0f49..c030352 100644 --- a/ansible/roles/semaphore/tasks/main.yml +++ b/ansible/roles/semaphore/tasks/main.yml @@ -26,16 +26,12 @@ - "{{ semaphore_data_dir }}" - "{{ semaphore_config_dir }}" -- name: Deploy PostgreSQL quadlet (when using postgres backend) +# ============================================================ +# LEGACY DEPLOYMENT (podman_container + generate systemd) +# ============================================================ +- name: Legacy deployment with PostgreSQL when: semaphore_use_postgres | default(false) block: - - name: Ensure containers systemd directory exists - ansible.builtin.file: - path: /etc/containers/systemd - state: directory - mode: "0755" - become: true - - name: Create required Podman volumes ansible.builtin.command: cmd: "podman volume create {{ item }}" @@ -47,51 +43,73 @@ - "{{ semaphore_postgres_volume }}" - "{{ semaphore_data_volume }}" - - name: Deploy PostgreSQL quadlet file - ansible.builtin.template: - src: semaphore-postgres.container.j2 - dest: "/etc/containers/systemd/{{ semaphore_postgres_container_name }}.container" - owner: root - group: root - mode: "0644" + - name: Deploy PostgreSQL container (legacy) + containers.podman.podman_container: + name: "{{ semaphore_postgres_container_name }}" + image: "{{ semaphore_postgres_image }}" + state: started + recreate: true + volumes: + - "{{ semaphore_postgres_volume }}:/var/lib/postgresql/data:Z" + env: + POSTGRES_USER: "{{ semaphore_postgres_user }}" + POSTGRES_PASSWORD: "{{ vault_semaphore_database_password }}" + POSTGRES_DB: "{{ semaphore_postgres_db }}" become: true - - name: Deploy Semaphore quadlet file - ansible.builtin.template: - src: semaphore.container.j2 - dest: "/etc/containers/systemd/{{ semaphore_container_name }}.container" - owner: root - group: root - mode: "0644" + - name: Deploy Semaphore container (legacy) + containers.podman.podman_container: + name: "{{ semaphore_container_name }}" + image: "{{ semaphore_image }}" + state: started + recreate: true + ports: + - "{{ semaphore_port }}:3000" + volumes: + - "{{ semaphore_data_volume }}:/var/lib/semaphore:Z" + - "{{ semaphore_config_dir }}:/etc/semaphore:Z" + env: + SEMAPHORE_DB_DIALECT: "postgres" + SEMAPHORE_DB_PATH: "" + SEMAPHORE_DB_USER: "{{ semaphore_postgres_user }}" + SEMAPHORE_DB_PASS: "{{ vault_semaphore_database_password }}" + SEMAPHORE_DB_HOST: "{{ semaphore_postgres_container_name }}" + SEMAPHORE_DB_PORT: "5432" + SEMAPHORE_DB_NAME: "{{ semaphore_postgres_db }}" + SEMAPHORE_ADMIN: "admin" + SEMAPHORE_ADMIN_PASSWORD: "{{ vault_semaphore_admin_password }}" + SEMAPHORE_ACCESS_KEY_ENCRYPTION: "{{ vault_semaphore_access_key_encryption }}" become: true - - name: Reload systemd daemon + - name: Generate systemd service for PostgreSQL + ansible.builtin.command: + cmd: "podman generate systemd --name --new --files {{ semaphore_postgres_container_name }}" + chdir: /etc/systemd/system + become: true + changed_when: true + + - name: Generate systemd service for Semaphore + ansible.builtin.command: + cmd: "podman generate systemd --name --new --files {{ semaphore_container_name }}" + chdir: /etc/systemd/system + become: true + changed_when: true + + - name: Reload systemd and enable services ansible.builtin.systemd: daemon_reload: true - become: true - - - name: Start PostgreSQL quadlet service - ansible.builtin.command: - cmd: "systemctl start {{ semaphore_postgres_container_name }}.service" - become: true - changed_when: true - - - name: Start Semaphore quadlet service - ansible.builtin.command: - cmd: "systemctl start {{ semaphore_container_name }}.service" - become: true - changed_when: true - - - name: Enable quadlet services - ansible.builtin.systemd: name: "{{ item }}" + state: started enabled: true become: true loop: - - "{{ semaphore_postgres_container_name }}.service" - - "{{ semaphore_container_name }}.service" + - "container-{{ semaphore_postgres_container_name }}.service" + - "container-{{ semaphore_container_name }}.service" -- name: Fallback - legacy podman_container deployment (BoltDB) +# ============================================================ +# LEGACY DEPLOYMENT - BoltDB fallback +# ============================================================ +- name: Legacy deployment with BoltDB when: not (semaphore_use_postgres | default(false)) block: - name: Create Semaphore config.json for BoltDB