95 lines
2.8 KiB
YAML

---
- name: Ensure OpenApply group exists
ansible.builtin.group:
name: "{{ openapply_app_service_group }}"
state: present
- name: Ensure OpenApply service user exists
ansible.builtin.user:
name: "{{ openapply_app_service_user }}"
group: "{{ openapply_app_service_group }}"
shell: /usr/sbin/nologin
create_home: false
system: true
state: present
- name: Ensure OpenApply root directory exists
ansible.builtin.file:
path: "{{ openapply_app_root }}"
state: directory
owner: "{{ openapply_app_service_user }}"
group: "{{ openapply_app_service_group }}"
mode: "0755"
- name: Render OpenApply environment file
ansible.builtin.template:
src: openapply.env.j2
dest: "{{ openapply_app_root }}/.env"
owner: "{{ openapply_app_service_user }}"
group: "{{ openapply_app_service_group }}"
mode: "0640"
- name: Sync OpenApply source code
ansible.builtin.git:
repo: "{{ openapply_app_repo_url }}"
version: "{{ openapply_app_repo_version }}"
dest: "{{ openapply_app_root }}"
update: true
force: false
accept_hostkey: true
key_file: "{{ openapply_app_git_ssh_key_file | default(omit, true) }}"
become: true
become_user: "{{ openapply_app_service_user }}"
register: openapply_repo_checkout
- name: Check node_modules presence
ansible.builtin.stat:
path: "{{ openapply_app_root }}/node_modules"
register: openapply_node_modules
- name: Install OpenApply dependencies via pnpm
ansible.builtin.command:
cmd: pnpm install --frozen-lockfile
chdir: "{{ openapply_app_root }}"
become: true
become_user: "{{ openapply_app_service_user }}"
when:
- openapply_repo_checkout.changed or openapply_app_force_rebuild | bool or not openapply_node_modules.stat.exists
changed_when: true
- name: Check which build directories exist
ansible.builtin.stat:
path: "{{ openapply_app_root }}/{{ item }}"
register: openapply_build_dir_stats
loop: "{{ openapply_app_build_subdirs }}"
- name: Build OpenApply subprojects
ansible.builtin.command:
cmd: pnpm run build
chdir: "{{ openapply_app_root }}/{{ item.item }}"
become: true
become_user: "{{ openapply_app_service_user }}"
loop: "{{ openapply_build_dir_stats.results }}"
when:
- item.stat.exists
- openapply_repo_checkout.changed or openapply_app_force_rebuild | bool
changed_when: true
- name: Install OpenApply systemd unit
ansible.builtin.template:
src: openapply.service.j2
dest: "/etc/systemd/system/{{ openapply_app_service_name }}.service"
owner: root
group: root
mode: "0644"
notify:
- Reload systemd
- Restart OpenApply service
- name: Ensure OpenApply service is enabled and started
ansible.builtin.systemd:
name: "{{ openapply_app_service_name }}"
enabled: true
state: started
daemon_reload: true