Skip to content
install.yml 3.79 KiB
Newer Older
jerome's avatar
jerome committed
---

  - name: Register Nextcloud in inventory
    import_role:
jerome's avatar
jerome committed
      name: _app_log_inventory
jerome's avatar
jerome committed
    vars:
      log_type: "install"
jerome's avatar
jerome committed

  - name: Create LetsEncrypt certificate
    import_role:
jerome's avatar
jerome committed
      name: _letsencrypt_certificate

  - name: Create Database for Nextcloud
    import_role:
jerome's avatar
jerome committed
      name: _create_database

  - import_tasks: volume.yml
    when: hcloud_token is defined

jerome's avatar
jerome committed
  - name: create temporary download directory
    tempfile:
      state: directory
      suffix: "_app_new"
    register: _tmp_new_app
    changed_when: False

  - name: "check local release {{ local_release }} for nextcloud__instance"
jerome's avatar
jerome committed
    local_action: stat path=$PWD/{{ local_release }}
    register: local_release_file

  - name: "retrieving nextcloud version {{ app_version }} in {{ _tmp_new_app.path }} {{ app_instance_root }}"
jerome's avatar
jerome committed
    unarchive:
jerome's avatar
jerome committed
      remote_src: True
jerome's avatar
jerome committed
      src: "https://download.nextcloud.com/server/releases/nextcloud-{{ app_version }}.tar.bz2"
      dest: "{{ _tmp_new_app.path }}"
      group: "www-data"
      owner: "www-data"
      creates: "{{ app_instance_root }}"
jerome's avatar
jerome committed
    when: not(local_release_file.stat.exists)

  - name: "retrieving nextcloud from ./{{ local_release }} in {{ _tmp_new_app.path }}"
    unarchive:
      src: "{{ local_release }}"
      dest: "{{ _tmp_new_app.path }}"
      group: "www-data"
      owner: "www-data"
      creates: "{{ app_instance_root }}"
    when: local_release_file.stat.exists
jerome's avatar
jerome committed

  - name: "Move {{ _tmp_new_app.path }}/nextcloud to {{ app_instance_root }}"
    command: "/bin/mv {{ _tmp_new_app.path }}/nextcloud {{ app_instance_root }}"
    args:
      creates: "{{ app_instance_root }}"

  - name: "dir {{ app_data }}"
    file:
      path: "{{ app_data }}"
      state: directory
      mode: 0700
      group: "www-data"
      owner: "www-data"

  - name: "remove {{ _tmp_new_app.path }}"
    file:
      path: "{{ _tmp_new_app.path }}"
      state: absent
    changed_when: False

  - name: "cron mode for background jobs"
    cron:
      name: "{{ app_instance_root }}/cron.php >/dev/null 2>&1"
      user: "www-data"
      minute: "*/15"
      job: "php{{ php_version }} -f {{ app_instance_root }}/cron.php >/dev/null 2>&1"
jerome's avatar
jerome committed

  - name: "test absence of config.php (determines first install)"
    stat:
      path: "{{ app_instance_root }}/config/config.php"
    register: config

  - name: "template for install script"
    template:
      src: "nextcloud_app_install.j2"
      dest: "{{ app_instance_root }}/ansible_base_install.sh"
      mode: 0700
    when: not (config.stat.exists)

  - name: "run install script using occ (no idempotency) "
    command: "{{ app_instance_root }}/ansible_base_install.sh"
    when: not (config.stat.exists)

  - name: "remove install script"
    file:
      path: "{{ app_instance_root }}/ansible_base_install.sh"
      state: absent
    when: not (config.stat.exists)

  - name: "App update every mondays"
    cron:
      name: "{{ app_instance_root }}/occ app:update --all >/dev/null 2>&1"
      user: "www-data"
      hour: "4"
jerome's avatar
jerome committed
      minute: "0"
      job: "php -f {{ app_instance_root }}/occ app:update --all >/dev/null 2>&1"

  - name: Import Backup Role
    import_role:
jerome's avatar
jerome committed
      name: _app_backup

  - name: Import Logrotate
    import_role:
jerome's avatar
jerome committed
      name: _app_logrotate

  - name: "template {{ rev_proxy }}_nextcloud.j2 {{ app_instance_id }}"
    template:
      src: "{{ rev_proxy }}_nextcloud.j2"
      dest: "/etc/{{ rev_proxy }}/sites-available/{{ app_instance_id }}.conf"
jerome's avatar
jerome committed
    notify: reload {{ rev_proxy }} nextcloud_instance
jerome's avatar
jerome committed

  - name: "enable site for {{ app_domain }}"
    file:
      state: link
      path: "/etc/{{ rev_proxy }}/sites-enabled/{{ app_instance_id }}.conf"
      src: "/etc/{{ rev_proxy }}/sites-available/{{ app_instance_id }}.conf"
jerome's avatar
jerome committed
    notify: reload {{ rev_proxy }} nextcloud_instance
jerome's avatar
jerome committed

  - name: Set up monit
    import_role:
      name: _app_monit