--- - name: "🧭 Akaunting | Resolve the data volume's mountpoint on this node" ansible.builtin.command: >- container volume inspect --format '{{ "{{.Mountpoint}}" }}' {{ AKAUNTING_VOLUME | quote }} register: akaunting_volume_mountpoint changed_when: false - name: "🔎 Akaunting | Check if first run (marker exists?)" ansible.builtin.stat: path: "{{ AKAUNTING_SETUP_MARKER }}" register: akaunting_marker_stat - when: not akaunting_marker_stat.stat.exists block: - name: "▶️ Akaunting | First-run install one-shot ({{ DEPLOYMENT_MODE }})" ansible.builtin.include_tasks: file: "setup/{{ DEPLOYMENT_MODE }}.yml" apply: delegate_to: "{{ STACK_HOST }}" - name: "📁 Akaunting | Create first-run marker to disable future setup" ansible.builtin.file: path: "{{ AKAUNTING_SETUP_MARKER }}" state: touch mode: "0644" - name: "🔍 Akaunting | Resolve the hosting node and container id" ansible.builtin.include_tasks: "{{ lookup('path_absolute', 'roles/sys-svc-compose/tasks/utils/swarm/resolve_host_cid.yml') }}" vars: resolve_service_key: "akaunting" resolve_output_prefix: AKAUNTING resolve_compose_cid: "{{ AKAUNTING_CONTAINER }}" - name: "🔑 Akaunting | Realign the administrator password with the declared one" ansible.builtin.shell: > # nocheck: container-exec-resolver AKAUNTING_LOCAL_CID resolved at delegate_to runtime container exec -e ADMIN_EMAIL={{ AKAUNTING_ADMIN_EMAIL | quote }} -e ADMIN_PASSWORD={{ AKAUNTING_ADMIN_PASSWORD | quote }} {{ AKAUNTING_LOCAL_CID | quote }} php artisan tinker --execute={{ lookup('file', 'php/realign_admin_password.php') | quote }} register: akaunting_admin_password changed_when: "'CHANGED' in akaunting_admin_password.stdout" failed_when: >- akaunting_admin_password.rc != 0 or 'FAILED' in akaunting_admin_password.stdout no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}" delegate_to: "{{ AKAUNTING_HOST_NODE }}" run_once: true