--- - 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