You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
4.0 KiB
YAML

---
- name: Install required dependencies
apt:
state: present
name:
# For Office / Video Previews
- ffmpeg
- libreoffice
# For SMB Access
- smbclient
# For SVG support
- libmagickcore-6.q16-6-extra
# PHP Dependencies
- php-apcu
- php-bcmath
- php-bz2
- php-curl
# - php-dom
# - php-fileinfo
- php-gd
- php-gmp
# - php-iconv
- php-imagick
- php-intl
- php-json
- php-mbstring
# - php-mcrypt
- php-mysql
# - php-posix
- php-redis
# - php-simplexml
- php-xml
# - php-xmlreader
# - php-xmlwriter
- php-zip
- name: Check if Nextcloud is already downloaded
stat:
path: "{{ nextcloud_installation_directory }}/index.php"
register: nextcloud_installed
check_mode: no
- name: Download Nextcloud
include_tasks: install.yml
when: not nextcloud_installed.stat.exists
- name: Create data directory
file:
state: directory
path: "{{ nextcloud_data_directory }}"
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: "u=rwx,g=rx,o="
- name: Install Nextcloud
become_user: "{{ system_user }}"
command: >-
/usr/bin/php occ maintenance:install
--database mysql
--database-name {{ database_name | quote }}
--database-user {{ database_user | quote }}
--database-pass {{ database_pass | quote }}
--admin-user {{ nextcloud_admin_user | quote }}
--admin-pass {{ nextcloud_admin_pass | quote }}
--data-dir {{ nextcloud_data_directory | quote }}
args:
chdir: "{{ nextcloud_installation_directory }}"
creates: "{{ nextcloud_config }}"
- name: Store additional Nextcloud configuration
copy:
content: "{{ import_config | to_nice_json }}\n"
dest: "{{ import_config_file }}"
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: u=rw,g=r,o=
register: import_config_file_task
tags:
- nextcloud_config
- name: Import additional Nextcloud configuration
become_user: "{{ system_user }}"
command: >-
/usr/bin/php occ
config:import
{{ import_config_file | quote }}
args:
chdir: "{{ nextcloud_installation_directory }}"
when: import_config_file_task.changed
tags:
- nextcloud_config
- name: Create scripts directories
file:
state: directory
path: "{{ scripts_directory }}"
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: "u=rwx,g=rx,o="
- name: Install helper scripts
template:
src: "scripts/{{ item }}"
dest: "{{ scripts_directory }}/{{ item }}"
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: "u=rwx,g=rx,o="
loop:
- extract_app_list.py
- name: Install Nextcloud apps
become_user: "{{ system_user }}"
command: >-
/usr/bin/php occ
app:install
{{ item | quote }}
args:
chdir: "{{ nextcloud_installation_directory }}"
register: nextcloud_apps_install_results
changed_when: "'already installed' not in nextcloud_apps_install_results.stdout"
failed_when: >-
nextcloud_apps_install_results.rc != 0 and
not (nextcloud_apps_install_results.rc == 1 and 'already installed' in nextcloud_apps_install_results.stdout)
loop: "{{ enabled_apps_list }}"
ignore_errors: yes # fail does not prevent further roll out
tags:
- nextcloud_apps
- name: Disable some Nextcloud apps
become_user: "{{ system_user }}"
command: >-
/usr/bin/php occ
app:disable
{{ item | quote }}
args:
chdir: "{{ nextcloud_installation_directory }}"
register: nextcloud_apps_install_results
changed_when: "'No such app enabled: ' not in nextcloud_apps_install_results.stdout"
failed_when: nextcloud_apps_install_results.rc != 0
loop: "{{ disabled_apps_list }}"
ignore_errors: yes # fail does not prevent further roll out
tags:
- nextcloud_apps
- name: Add background cron job
cron:
name: "nextcloud cron for {{ domain }}"
minute: "*/5"
job: >-
sudo -u {{ system_user | quote }}
/usr/bin/php
--define apc.enable_cli=1
--file {{ nextcloud_installation_directory | quote }}/cron.php