diff --git a/roles/firefly3/tasks/cron.yml b/roles/firefly3/tasks/cron.yml index 20d6f77..046a8c5 100644 --- a/roles/firefly3/tasks/cron.yml +++ b/roles/firefly3/tasks/cron.yml @@ -6,4 +6,4 @@ name: firefly-iii-cron minute: 0 hour: 3 - job: "/usr/bin/php {{ firefly3_home }}/artisan firefly-iii:cron > /dev/null" + job: "/usr/bin/php {{ firefly3_app_home }}/artisan firefly-iii:cron > /dev/null" diff --git a/roles/firefly3/tasks/firefly3.yml b/roles/firefly3/tasks/firefly3.yml index 88f5183..9601da6 100644 --- a/roles/firefly3/tasks/firefly3.yml +++ b/roles/firefly3/tasks/firefly3.yml @@ -1,9 +1,15 @@ --- -- name: Create application directory +## Remove the previous app & install the new version +- name: Remove Firefly3 previous version + ansible.builtin.file: + state: absent + dest: "{{ firefly3_app_home }}" + +- name: Create app home ansible.builtin.file: state: directory - dest: "{{ firefly3_home }}" + dest: "{{ firefly3_app_home }}" owner: root group: www-data mode: "0o750" @@ -12,17 +18,16 @@ ansible.builtin.unarchive: remote_src: true src: "{{ firefly3_url }}" - dest: "{{ firefly3_home }}" + dest: "{{ firefly3_app_home }}" owner: root group: www-data mode: "a-rwx,u+rwX,g+rX" - exclude: - - ".env" + exclude: "{{ firefly3_userdata_app_dirs }}" - name: Put config file ansible.builtin.template: src: "env.j2" - dest: "{{ firefly3_home }}/.env" + dest: "{{ firefly3_app_home }}/.env" owner: root group: www-data mode: "0o640" @@ -30,11 +35,42 @@ - name: Check writable dirs ansible.builtin.file: state: directory - dest: "{{ firefly3_home }}/{{ item }}" + dest: "{{ firefly3_app_home }}/{{ item }}" owner: root group: www-data recurse: true mode: "g+w" - loop: - - "bootstrap" - - "storage" + loop: "{{ firefly3_writable_app_dirs }}" + +## Ensure the data dirs exists, populate them if not +- name: Create data home + ansible.builtin.file: + state: directory + path: "{{ firefly3_data_home }}" + owner: www-data + group: www-data + mode: "0o750" + +# If the first data dir exists, others should exist too +- name: Get data dir + ansible.builtin.stat: + path: "{{ firefly3_data_home }}/{{ firefly3_userdata_app_dirs[0] }}" + register: _firefly3_userdata_dir_stat + +- name: Install Firefly3 data dir + ansible.builtin.unarchive: + remote_src: true + src: "{{ firefly3_url }}" + dest: "{{ firefly3_data_home }}" + owner: www-data + group: www-data + mode: "a-rwx,u+rwX,g+rX" + include: "{{ firefly3_userdata_app_dirs | map('regex_replace', '^', './') }}" + when: not _firefly3_userdata_dir_stat.stat.exists + +- name: Link Firefly3 userdata dirs + ansible.builtin.file: + state: link + src: "{{ firefly3_data_home }}/{{ item }}" + dest: "{{ firefly3_app_home }}/{{ item }}" + loop: "{{ firefly3_userdata_app_dirs }}" diff --git a/roles/firefly3/vars/main.yml b/roles/firefly3/vars/main.yml index 0d6a84f..deb772f 100644 --- a/roles/firefly3/vars/main.yml +++ b/roles/firefly3/vars/main.yml @@ -4,4 +4,12 @@ firefly3_version: "6.2.9" firefly3_url: "https://github.com/firefly-iii/firefly-iii/releases/download/v{{ firefly3_version }}/FireflyIII-v{{ firefly3_version }}.tar.gz" firefly3_access_url: "{{ web_hostname | selectattr('type', 'defined') | selectattr('type', '==', 'firefly3') | map(attribute='host') | first }}" -firefly3_home: "/srv/http/{{ firefly3_access_url }}" + +# Access path +firefly3_app_home: "/var/www/{{ firefly3_access_url }}" +firefly3_data_home: "/srv/www-data/{{ firefly3_access_url }}" + +firefly3_writable_app_dirs: + - bootstrap +firefly3_userdata_app_dirs: + - storage diff --git a/roles/nginx/templates/vhosts/ff.libertus.eu.conf.j2 b/roles/nginx/templates/vhosts/ff.libertus.eu.conf.j2 index 1fd58be..e7506c6 100644 --- a/roles/nginx/templates/vhosts/ff.libertus.eu.conf.j2 +++ b/roles/nginx/templates/vhosts/ff.libertus.eu.conf.j2 @@ -1,7 +1,7 @@ server { {% include './templates/header.conf.j2' %} - root /srv/http/ff.libertus.eu/public; + root /var/www/ff.libertus.eu/public; index index.html index.htm index.php;