--- - 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 --define apc.enable_cli=1 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 --define apc.enable_cli=1 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 --define apc.enable_cli=1 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 --define apc.enable_cli=1 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