# Copyright (C) 2019-2020 Free I.T. Athens # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . - name: Install MySQL Support for Python apt: name: python-pymysql state: present - name: Create Database mysql_db: name: "{{ nc_db_name }}" state: present login_unix_socket: /var/run/mysqld/mysqld.sock - name: Create Database User mysql_user: name: "{{ nc_db_user }}" password: "{{ nc_db_pass }}" priv: "{{ nc_db_name }}.*:ALL,GRANT" state: present login_unix_socket: /var/run/mysqld/mysqld.sock - name: Install PHP Modules apt: name: [ # Required 'php-ctype', 'php-curl', 'php-dom', 'php-gd', 'php-iconv', 'php-json', 'php-xml', 'php-mbstring', 'php-posix', 'php-simplexml', 'php-xmlreader', 'php-xmlwriter', 'php-zip', # Database Connectors 'php-pgsql', # Recommended Packages 'php-fileinfo', 'php-bz2', 'php-intl', # Enhanced Performance 'php-redis', 'redis-server', # Preview Generation 'php-imagick' ] state: present notify: Reload Apache2 - name: Create Public HTML Directory file: path: "{{ nc_dir }}/public_html" state: directory - name: Create Nextcloud Directories file: path: "{{ nc_dir }}/public_html/data" state: directory owner: www-data group: www-data - name: Create Logs Directory file: path: "{{ nc_dir }}/logs" state: directory - name: Download Nextcloud get_url: url: "https://download.nextcloud.com/server/releases/\ nextcloud-{{ nc_version }}.tar.bz2" dest: /tmp/nextcloud-{{ nc_version }}.tar.bz2 checksum: sha256:{{ nc_sha256_hash }} - name: Extract Nextcloud unarchive: src: /tmp/nextcloud-{{ nc_version }}.tar.bz2 dest: "{{ nc_dir }}/public_html" owner: www-data group: www-data extra_opts: [--strip-components=1] remote_src: yes - name: Install Nextcloud command: | php occ maintenance:install --database mysql \ --database-name {{ nc_db_name }} --database-host {{ nc_db_host }} \ --database-user {{ nc_db_user }} --database-pass {{ nc_db_pass }} \ --admin-user {{ nc_admin }} --admin-pass {{ nc_admin_pass }} \ --data-dir {{ nc_dir }}/public_html/data become_user: www-data register: nextcloud_install args: chdir: "{{ nc_dir }}/public_html" creates: "{{ nc_dir }}/public_html/config/config.php" - name: Add Missing Database Indexes command: php occ db:add-missing-indices become_user: www-data args: chdir: "{{ nc_dir }}/public_html" when: nextcloud_install.changed - name: Add Domain Name to Trusted Domains command: | php occ config:system:set trusted_domains 0 --value={{ nc_domain }} become_user: www-data args: chdir: "{{ nc_dir }}/public_html" when: nextcloud_install.changed - name: "Enable Apache2 Module: rewrite" apache2_module: name=rewrite state=present - name: Apply Apache Configuration template: src: nextcloud.conf.j2 dest: /etc/apache2/sites-available/{{ nc_domain }}.conf notify: Reload Apache2 - name: Enable Apache Website shell: a2ensite {{ nc_domain }} args: creates: /etc/apache2/sites-enabled/{{ nc_domain }}.conf notify: Reload Apache2