ansible-role-nextcloud/tasks/nextcloud-install.yml

160 lines
6.1 KiB
YAML

---
- 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' ]