--- - block: - name: Install the nextcloud php prerequisites apt: name={{ nextcloud_php_required_packages }} state=present cache_valid_time=1800 tags: [ 'nextcloud', 'php', 'php-fpm' ] - block: - name: Create the nextcloud webroot file: dest={{ nextcloud_web_basedir }} owner=root group=root state=directory - name: Create the nextcloud log directory file: dest: '{{ nextcloud_log_directory }}' state: directory owner: '{{ item.user }}' group: '{{ item.user }}' with_items: '{{ phpfpm_pools }}' - name: Install the logrotate configuration for nextcloud template: src: nextcloud-logrotate.conf.j2 dest: /etc/logrotate.d/nextcloud owner: root group: root mode: 0444 - name: Create the nextcloud data directory file: dest: '{{ nextcloud_data_dir }}' state: directory owner: '{{ item.user }}' group: '{{ item.user }}' with_items: '{{ phpfpm_pools }}' when: phpfpm_create_users - name: Create the nextcloud data directory when the user has been created externally become: True become_user: '{{ item.user }}' file: dest: '{{ nextcloud_data_dir }}' state: directory owner: '{{ item.user }}' group: '{{ item.user }}' with_items: '{{ phpfpm_pools }}' when: not phpfpm_create_users - name: Get nextcloud get_url: url={{ nextcloud_download_url }} dest=/srv/{{ nextcloud_dist_filename }} - name: Unpack the nextcloud archive unarchive: remote_src=yes src=/srv/{{ nextcloud_dist_filename }} dest={{ nextcloud_web_basedir }} owner={{ item.user }} group={{ item.user }} args: creates: '{{ item.doc_root }}/index.php' with_items: '{{ phpfpm_pools }}' tags: [ 'nextcloud' ] - block: - name: Configure the nextcloud instance shell: cd {{ item.doc_root }} && php occ maintenance:install --database="{{ nextcloud_db }}" --database-host "{{ nextcloud_db_host }}" --database-name "{{ nextcloud_db_name }}" --database-user "{{ nextcloud_db_user }}" --database-pass "{{ nextcloud_db_pwd }}" --admin-user "{{ nextcloud_admin_user }}" --admin-pass "{{ nextcloud_admin_u_pwd }}" --data-dir={{ nextcloud_data_dir }} && touch {{ nextcloud_data_dir }}/.ht_nextcloud_setup args: creates: '{{ nextcloud_data_dir }}/.ht_nextcloud_setup' with_items: '{{ phpfpm_pools }}' - name: Set the trusted domains list shell: cd {{ item.webroot }} && php occ config:system:set trusted_domains {{ item.id }} --value={{ item.name }} && touch {{ nextcloud_data_dir }}/.ht_nextcloud_trusted_domains_{{ item.id }} args: creates: '{{ nextcloud_data_dir }}/.ht_nextcloud_trusted_domains_{{ item.id }}' with_items: '{{ nextcloud_servernames }}' - name: Set the log file path shell: cd {{ item.doc_root }} && php occ log:file --file {{ nextcloud_log_directory }}/nextcloud.log && touch {{ nextcloud_data_dir }}/.ht_nextcloud_logfile args: creates: '{{ nextcloud_data_dir }}/.ht_nextcloud_logfile' with_items: '{{ phpfpm_pools }}' - name: Set the log level shell: cd {{ item.doc_root }} && php occ log:manage --level {{ nextcloud_log_level }} && touch {{ nextcloud_data_dir }}/.ht_nextcloud_log_level args: creates: '{{ nextcloud_data_dir }}/.ht_nextcloud_log_level' with_items: '{{ phpfpm_pools }}' - name: Set the log backend shell: cd {{ item.doc_root }} && php occ log:manage --backend {{ nextcloud_log_backend }} && touch {{ nextcloud_data_dir }}/.ht_nextcloud_log_backend args: creates: '{{ nextcloud_data_dir }}/.ht_nextcloud_log_backend' with_items: '{{ phpfpm_pools }}' - name: Setup the cron configuration shell: cd {{ item.webroot }} ; php occ background:cron ; touch {{ nextcloud_data_dir }}/.ht_nextcloud_cron args: creates: 'touch {{ nextcloud_data_dir }}/.ht_nextcloud_cron' with_items: '{{ nextcloud_servernames }}' tags: [ 'nextcloud', 'nextcloud_config_cron' ] - name: Install the nextcloud cron job become_user: root cron: user: '{{ item.user }}' minute: "*/15" job: "php -f {{ item.doc_root }}/cron.php" name: "NextCloud cron job" cron_file: "nextcloud_cron" state: present disabled: False with_items: '{{ phpfpm_pools }}' tags: [ 'nextcloud', 'nextcloud_config_cron', 'nextcloud_config' ] become: True become_user: '{{ nextcloud_user }}' tags: [ 'nextcloud', 'nextcloud_config' ] - block: - name: Create the nextcloud encryption keys directory become_user: root file: dest: '{{ nextcloud_oc_dir }}' state: directory owner: '{{ item.user }}' group: '{{ item.user }}' with_items: '{{ phpfpm_pools }}' when: phpfpm_create_users - name: Create the nextcloud encryption keys directory when the user has been created externally file: dest: '{{ nextcloud_oc_dir }}' state: directory with_items: '{{ phpfpm_pools }}' when: not phpfpm_create_users - name: Activate global encryption shell: cd {{ item.doc_root }} ; php occ app:enable encryption ; php occ encryption:enable ; php occ encryption:enable-master-key ; php occ encryption:change-key-storage-root {{ nextcloud_oc_dir }} ; touch {{ nextcloud_oc_dir }}/.ht_nextcloud_oc args: creates: '{{ nextcloud_oc_dir }}/.ht_nextcloud_oc' with_items: '{{ phpfpm_pools }}' become: True become_user: '{{ nextcloud_user }}' when: nextcloud_encryption_enabled tags: [ 'nextcloud', 'nextcloud_config', 'nextcloud_config_oc' ] - block: - name: Enable ldap shell: cd {{ item.doc_root }} ; php occ app:enable user_ldap ; touch {{ item.doc_root }}/.ht_nextcloud_ldap_enabled args: creates: '{{ item.doc_root }}/.ht_nextcloud_ldap_enabled' with_items: '{{ phpfpm_pools }}' - name: Create an empty ldap configuration to start with shell: cd {{ item.doc_root }} ; php occ ldap:create-empty-config ; touch {{ item.doc_root }}/.ht_nextcloud_ldap_configured args: creates: '{{ item.doc_root }}/.ht_nextcloud_ldap_configured' with_items: '{{ phpfpm_pools }}' become: True become_user: '{{ nextcloud_user }}' when: nextcloud_ldap_auth tags: [ 'nextcloud', 'nextcloud_config', 'nextcloud_config_ldap' ]