--- - name: create nextcloud directory file: path: "{{ item }}" state: directory owner: "{{ nextcloud_user }}" group: "{{ nextcloud_group }}" loop: - "{{ nextcloud_directory }}" - "{{ nextcloud_install_directory }}" - "{{ nextcloud_datadir }}" - name: Get current installed nextcloud version stat: path: "{{ nextcloud_directory }}/current" register: nc_current - name: Download and extract the nextcloud release become: yes become_user: "{{ nextcloud_user }}" unarchive: src: "{{ nextcloud_download }}" dest: "{{ nextcloud_install_directory }}" remote_src: yes extra_opts: - "--strip-components=1" when: not nc_current.stat.lnk_target is defined or nc_current.stat.lnk_target != nextcloud_install_directory - name: Generate nextcloud config file become: yes become_user: "{{ nextcloud_user }}" command: | php occ maintenance:install --no-interaction --database {{ nextcloud_db_type }} --database-host "{{ nextcloud_db_host }}" \ --database-name {{ nextcloud_db }} \ --database-user {{ nextcloud_db_user }} \ --database-pass {{ nextcloud_db_password }} \ --admin-user {{ nextcloud_admin }} \ --admin-pass {{ nextcloud_admin_password }} \ --data-dir {{ nextcloud_datadir }} \ args: chdir: "{{ nextcloud_install_directory }}" creates: "{{ nextcloud_install_directory }}/config/config.php" when: not nc_current.stat.lnk_target is defined - name: Copy old nextcloud config become: yes become_user: "{{ nextcloud_user }}" copy: src: "{{ nextcloud_directory }}/current/config/config.php" dest: "{{ nextcloud_install_directory }}/config/config.php" owner: "{{ nextcloud_user }}" group: "{{ nextcloud_group }}" remote_src: yes when: nc_current.stat.lnk_target is defined and nc_current.stat.lnk_target != nextcloud_install_directory - name: Configure nextcloud become: yes become_user: "{{ nextcloud_user }}" command: "php occ config:system:set {{ item.key }} --value {{ item.value }}" args: chdir: "{{ nextcloud_install_directory }}" loop: "{{ nextcloud_config }}" # TODO: improve this!!! this is bad! (but it works) - name: Install/Remove nextcloud apps become_user: "{{ nextcloud_user }}" command: "php occ app:{% if item.state | default('present') != 'absent' and item.state | default('present') != 'disabled' %}install{% elif item.state == 'disabled' %}disable{% else %}remove{% endif %} {{ item.name | default(item) }}" args: chdir: "{{ nextcloud_install_directory }}" ignore_errors: yes loop: "{{ nextcloud_apps }}" - name: Make sure nextcloud apps are enabled become_user: "{{ nextcloud_user }}" command: "php occ app:enable {{ item.name | default(item) }}" args: chdir: "{{ nextcloud_install_directory }}" ignore_errors: yes when: item.state | default('present') != 'absent' and item.state | default('present') loop: "{{ nextcloud_apps }}" - name: Put nextcloud into maintenance mode become: yes become_user: "{{ nextcloud_user }}" command: "php occ maintenance:mode --on" args: chdir: "{{ nextcloud_directory }}/current" ignore_errors: yes when: nc_current.stat.lnk_target is defined and nc_current.stat.lnk_target != nextcloud_install_directory - name: Symlink current nextcloud version become: yes become_user: "{{ nextcloud_user }}" file: src: "{{ nextcloud_install_directory }}" dest: "{{ nextcloud_directory }}/current" owner: "{{ nextcloud_user }}" group: "{{ nextcloud_group }}" state: link - name: Run nextcloud upgrade command become: yes become_user: "{{ nextcloud_user }}" command: "php occ upgrade --no-interaction" args: chdir: "{{ nextcloud_directory }}/current" ignore_errors: yes when: nc_current.stat.lnk_target is defined and nc_current.stat.lnk_target != nextcloud_install_directory - name: Take nextcloud out of maintenance mode become: yes become_user: "{{ nextcloud_user }}" command: "php occ maintenance:mode --off" args: chdir: "{{ nextcloud_directory }}/current" ignore_errors: yes