67 lines
2.1 KiB
YAML
67 lines
2.1 KiB
YAML
---
|
|
- 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 |