--- - 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: Create Quadlet file for Semaphore ansible.builtin.template: src: semaphore.container.j2 dest: "/etc/containers/systemd/{{ semaphore_container_name }}.container" owner: root group: root mode: "0644" notify: reload systemd - name: Ensure Semaphore container is started ansible.builtin.systemd: name: "{{ semaphore_container_name }}" state: started enabled: true daemon_reload: true - name: Wait for Semaphore to become available ansible.builtin.wait_for: host: "127.0.0.1" port: "{{ semaphore_port }}" delay: 5 timeout: 60