- name: pin nextcloud version template: src: apt-preferences.j2 dest: /etc/apt/preferences.d/nextcloud mode: '0644' - name: setup cccv repo key apt_key: url: "https://packages.cccv.de/docs/cccv-archive-key.gpg" - name: add cccv infrapackages-nextcloud repo apt_repository: repo: "deb https://packages.cccv.de/infrapackages-nextcloud/ {{ ansible_distribution_release|lower }} main" - name: install nextcloud apt: pkg: - nextcloud - name: install nextcloud apps apt: pkg: "{{ nextcloud.app_pkgs | dict2items | rejectattr('value', 'none') | map(attribute='key') | list }}" - name: create nextcloud datadir file: path: "{{ nextcloud.datadir }}" owner: www-data group: www-data mode: 0770 state: directory - name: ensure apc is used on the cli as well copy: dest: "/etc/php/{{ php_version }}/cli/conf.d/enable-apc-cli.ini" owner: root group: root mode: 0644 content: | apc.enable_cli = 1 - name: check nextcloud install status check_mode: no shell: "nextcloud-occ status" register: nextcloud_status_check changed_when: false - name: setup nextcloud when: "'installed: false' in nextcloud_status_check.stdout" command: argv: - nextcloud-occ - maintenance:install - -n - --database - mysql - --database-host - '{{ nextcloud.db.host }}' - --database-name - '{{ nextcloud.db.name }}' - --database-user - '{{ nextcloud.db.user }}' - --database-pass - '{{ nextcloud.db.pw }}' - --admin-user - '{{ nextcloud.admin.name }}' - --admin-pass - '{{ nextcloud.admin.pw }}' - --data-dir - '{{ nextcloud.datadir }}' - name: set nextcloud trusted domains command: # noqa no-changed-when argv: - nextcloud-occ - config:system:set - trusted_domains - 1 - --value - "{{ nextcloud.externalurl }}" - name: set other nextcloud config values command: # noqa no-changed-when argv: - nextcloud-occ - config:system:set - "{{ item.key }}" - --type - "{{ item.get('type', 'string') }}" - --value - "{{ item.value }}" with_items: - { key: "mail_from_address", value: "{{ nextcloud.mail.from }}" } - { key: "mail_domain", value: "{{ nextcloud.mail.domain }}" } - { key: "mail_smtpmode", value: "{{ nextcloud.mail.mode }}" } - { key: "mail_smtpauthtype", value: "PLAIN" } - { key: "mail_smtphost", value: "{{ nextcloud.mail.server|d('') }}" } - { key: "mail_smtpport", value: "25" } - { key: "mail_smtppassword", value: "{{ nextcloud.mail.password|d('') }}" } - { key: "mail_smtpname", value: "{{ nextcloud.mail.user|d('') }}" } - { key: "memcache.local", value: '{{ "\OC\Memcache\APCu" }}' } - { key: "datadirectory", value: "{{ nextcloud.datadir }}" } - { key: "defaultapp", value: "files" } - { key: "default_phone_region", value: "DE" } - { key: "default_locale", value: "de_DE" } - { key: "default_language", value: "en" } - { key: "overwrite.cli.url", value: "https://{{ nextcloud.externalurl }}"} - { key: "profile.enabled", value: "false", type: "boolean"} - name: copy nextcloud nginx config template: src: nginx.j2 dest: /etc/nginx/sites-available/nextcloud owner: root group: root mode: 0644 notify: - restart nginx - name: enable nextcloud for nginx file: src: /etc/nginx/sites-available/nextcloud dest: /etc/nginx/sites-enabled/nextcloud state: link notify: - restart nginx - name: when: nextcloud.prometheus_exporter.enabled block: - name: install python and modules apt: pkg: - python3 - python3-prometheus-client - python3-schedule - name: copy exporter script notify: restart prometheus exporter template: src: nextcloud-prometheus-exporter.py.j2 dest: /usr/local/bin/nextcloud-prometheus-exporter.py owner: root group: root mode: 0755 - name: copy systemd service file notify: restart prometheus exporter copy: src: nextcloud-prometheus-exporter.service dest: /etc/systemd/system owner: root group: root mode: 0644