ansible-role-nextcloud/roles/nextcloud/tasks/nc_installation.yml

169 lines
5.7 KiB
YAML

---
#########
# Run command line installation.
# the web server must be running by now in order to launch the installation
- name: Trigger all pending handlers
meta: flush_handlers
- name: "[NC] - Setting directory ownership & permissions for the data folder"
file:
path: "{{ nextcloud_data_dir }}"
mode: "u=rwX,g=rX,o-rwx"
recurse: yes
state: directory
owner: "{{ nextcloud_websrv_user }}"
group: "{{ nextcloud_websrv_group }}"
- name: "[NC] - generate {{ nextcloud_admin_name }} password:"
set_fact: nextcloud_admin_pwd="{{ lookup( 'password', 'nextcloud_instances/'+ nextcloud_instance_name +'/web_admin.pwd length=10' ) }}"
when: nextcloud_admin_pwd is not defined
- name: "[NC] - Set temporary permissions for command line installation."
file:
path: "{{ nextcloud_webroot }}"
state: directory
recurse: yes
owner: "{{ nextcloud_websrv_user }}"
group: "{{ nextcloud_websrv_group }}"
- block:
- name: "[NC] - removing possibly old or incomplete config.php"
file:
path: "{{ nextcloud_webroot }}/config/config.php"
state: absent
- name: "[NC] - Run occ installation command"
become_user: "{{ nextcloud_websrv_user }}"
become_flags: "{{ ansible_become_flags | default(omit) }}"
become: yes
command: >
php occ maintenance:install
--database={{ nextcloud_tmp_backend }}
--database-host={{ nextcloud_db_host }}
--database-name={{ nextcloud_db_name }}
--database-user={{ nextcloud_db_admin }}
--database-pass={{ nextcloud_db_pwd }}
--admin-user={{ nextcloud_admin_name }}
--admin-pass={{ nextcloud_admin_pwd }}
--data-dir={{ nextcloud_data_dir }}
args:
chdir: "{{ nextcloud_webroot }}"
creates: "{{ nextcloud_webroot }}/config/config.php"
vars:
# mariadb is equal to mysql for occ
nextcloud_tmp_backend: "{{ 'mysql' if nextcloud_db_backend == 'mariadb' else nextcloud_db_backend }}"
notify: reload http
- name: "[NC] - Verify config.php - check filesize"
stat: path="{{ nextcloud_webroot }}/config/config.php"
register: nc_installation_confsize
failed_when: nc_installation_confsize.stat.size is undefined or nc_installation_confsize.stat.size <= 100
- name: "[NC] - Verify config.php - php syntax check"
command: "php -l {{ nextcloud_webroot }}/config/config.php"
register: nc_installation_confphp
changed_when: False
failed_when:
- nc_installation_confphp.rc is defined
- nc_installation_confphp.rc != 0
rescue:
# - name: Unfix su issue with occ
# include_tasks: tasks/unfix_su.yml
# when: ansible_become_method == "su"
- name: "[NC] - removing config.php when occ fail"
file:
path: "{{ nextcloud_webroot }}/config/config.php"
state: absent
failed_when: True
- name: "[NC] - Set Trusted Domains"
become_user: "{{ nextcloud_websrv_user }}"
become_flags: "{{ ansible_become_flags | default(omit) }}"
become: yes
command: php occ config:system:set trusted_domains {{ item.0 }} --value="{{ item.1 | ipwrap }}"
args:
chdir: "{{ nextcloud_webroot }}"
with_indexed_items: "{{ nextcloud_trusted_domain }}"
changed_when: true
- name: "[NC] - Set Trusted Proxies"
become_user: "{{ nextcloud_websrv_user }}"
become_flags: "{{ ansible_become_flags | default(omit) }}"
become: yes
command: php occ config:system:set trusted_proxies {{ item.0 }} --value="{{ item.1 }}"
args:
chdir: "{{ nextcloud_webroot }}"
with_indexed_items: "{{ nextcloud_trusted_proxies }}"
changed_when: true
- name: "[NC] - Set Nextcloud settings in config.php"
become_user: "{{ nextcloud_websrv_user }}"
become_flags: "{{ ansible_become_flags | default(omit) }}"
become: yes
command: php occ config:system:set {{ item.name }} --value="{{ item.value }}"
args:
chdir: "{{ nextcloud_webroot }}"
with_items:
- "{{ nextcloud_config_settings }}"
changed_when: true
- name: "[NC] - Set Redis Server"
become_user: "{{ nextcloud_websrv_user }}"
become_flags: "{{ ansible_become_flags | default(omit) }}"
become: yes
command: php occ config:system:set {{ item.name }} --value="{{ item.value }}"
args:
chdir: "{{ nextcloud_webroot }}"
with_items:
- "{{ nextcloud_redis_settings }}"
when: (nextcloud_install_redis_server | bool)
- name: "[NC] - Install Cronjob"
cron:
name: "Nextcloud Cronjob"
minute: "*/15"
user: "{{ nextcloud_websrv_user }}"
job: "php {{ nextcloud_webroot }}/cron.php"
cron_file: "nextcloud"
when: (nextcloud_background_cron | bool)
- name: "[NC] - Set Cron method to Crontab"
become_user: "{{ nextcloud_websrv_user }}"
become_flags: "{{ ansible_become_flags | default(omit) }}"
become: yes
command: php occ background:cron
args:
chdir: "{{ nextcloud_webroot }}"
when: (nextcloud_background_cron | bool)
- name: "[NC] - Set Custom Mimetype"
copy:
dest: "{{ nextcloud_webroot }}/config/mimetypemapping.json"
src: files/nextcloud_custom_mimetypemapping.json
- name: "[NC] - Ensure Nextcloud directories are 0750"
command: find {{ nextcloud_data_dir }} -type d -exec chmod -c 0750 {} \;
register: nc_installation_chmod_result
changed_when: "nc_installation_chmod_result.stdout != \"\""
- name: "[NC] - Ensure Nextcloud files are 0640"
command: find {{ nextcloud_data_dir }} -type f -exec chmod -c 0640 {} \;
register: nc_installation_chmod_result
changed_when: "nc_installation_chmod_result.stdout != \"\""
- name: "[NC] - Setting stronger directory ownership"
file:
path: "{{ nextcloud_webroot }}/{{ item }}/"
recurse: yes
owner: "{{ nextcloud_websrv_user }}"
group: "{{ nextcloud_websrv_group }}"
state: directory
with_items:
- apps
- assets
- config
- themes
- updater