diff --git a/ansible/roles/semaphore/tasks/main.yml b/ansible/roles/semaphore/tasks/main.yml index 103a1a4..5530231 100644 --- a/ansible/roles/semaphore/tasks/main.yml +++ b/ansible/roles/semaphore/tasks/main.yml @@ -24,28 +24,36 @@ - "{{ semaphore_data_dir }}" - "{{ semaphore_config_dir }}" -- name: Create and start Semaphore container - community.general.podman_container: - name: "{{ semaphore_container_name }}" - image: "{{ semaphore_image }}" - state: started - recreate: true - ports: - - "{{ semaphore_port }}:3000" - volumes: - - "{{ semaphore_data_dir }}:/var/lib/semaphore:Z" - - "{{ semaphore_config_dir }}:/etc/semaphore:Z" - env: - SEMAPHORE_DB_TYPE: "{{ semaphore_db_type }}" - SEMAPHORE_DB_PATH: "{{ semaphore_db_path }}" - SEMAPHORE_ADMIN: admin - SEMAPHORE_ADMIN_PASSWORD: "{{ vault_semaphore_admin_password }}" - SEMAPHORE_ACCESS_KEY_ENCRYPTION: "{{ vault_semaphore_access_key_encryption }}" - user: "{{ semaphore_user }}" - -- name: Generate systemd service for Semaphore +- name: Pull Semaphore image ansible.builtin.command: - cmd: podman generate systemd --name --new --files {{ semaphore_container_name }} + 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