--- - name: Ensure cast group exists ansible.builtin.group: name: "{{ semaphore_group }}" state: present system: true - name: Ensure cast user exists ansible.builtin.user: name: "{{ semaphore_user }}" group: "{{ semaphore_group }}" shell: /bin/bash create_home: true state: present - name: Create Semaphore data directories ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ semaphore_user }}" group: "{{ semaphore_group }}" mode: "0755" loop: - "{{ semaphore_data_dir }}" - "{{ semaphore_config_dir }}" - name: Pull Semaphore image ansible.builtin.command: cmd: "podman pull {{ semaphore_image }}" become: true become_user: "{{ semaphore_user }}" changed_when: false - name: Create and start Semaphore container ansible.builtin.command: cmd: > podman run -d --name {{ semaphore_container_name }} -p {{ semaphore_port }}:3000 -v {{ semaphore_data_dir }}:/var/lib/semaphore:Z -v {{ semaphore_config_dir }}:/etc/semaphore:Z -e SEMAPHORE_DB_TYPE={{ semaphore_db_type }} -e SEMAPHORE_DB_PATH={{ semaphore_db_path }} -e SEMAPHORE_ADMIN=admin -e SEMAPHORE_ADMIN_PASSWORD={{ vault_semaphore_admin_password }} -e SEMAPHORE_ACCESS_KEY_ENCRYPTION={{ vault_semaphore_access_key_encryption }} --user {{ semaphore_user }} {{ semaphore_image }} become: true become_user: "{{ semaphore_user }}" register: container_run changed_when: container_run.rc == 0 failed_when: container_run.rc != 0 and 'already in use' not in container_run.stderr - name: Generate systemd service for the container ansible.builtin.command: cmd: "podman generate systemd --name --new --files {{ semaphore_container_name }}" chdir: /etc/systemd/system creates: "/etc/systemd/system/container-{{ semaphore_container_name }}.service" become: true become_user: "{{ semaphore_user }}" - name: Reload systemd and enable service ansible.builtin.systemd: daemon_reload: true name: "container-{{ semaphore_container_name }}.service" state: started enabled: true