--- # tasks file for nextcloud - name: Ensure nextcloud config directory exists file: path: /home/{{ docker_user }}/nextcloud state: directory owner: '{{ docker_user }}' group: '{{ docker_user }}' - name: Provide docker-compose.yml template: src: templates/docker-compose.nextcloud.yml.j2 dest: /home/{{ docker_user }}/nextcloud/docker-compose.yml owner: "{{ docker_user }}" group: "{{ docker_user }}" mode: '0644' - name: Output docker-compose.yml shell: cat /home/{{ docker_user }}/nextcloud/docker-compose.yml register: output - debug: var: output - name: Provide database env vars copy: dest: /home/{{ docker_user }}/nextcloud/db.env owner: "{{ docker_user }}" group: "{{ docker_user }}" mode: '0640' content: | MYSQL_ROOT_PASSWORD={{ mariadb_root_password }} MYSQL_DATABASE={{ mysql_database }} MYSQL_PASSWORD={{ nextcloud_mariadb_password }} MYSQL_USER={{ nextcloud_mariadb_user }} - name: Provide Nextcloud env vars copy: dest: /home/{{ docker_user }}/nextcloud/nextcloud.env owner: "{{ docker_user }}" group: "{{ docker_user }}" mode: '0640' content: | VIRTUAL_HOST={{ virtual_host }} LETSENCRYPT_HOST={{ letsencrypt_host }} LETSENCRYPT_EMAIL={{ letsencrypt_email }} MYSQL_HOST={{ mysql_host }} MYSQL_DATABASE={{ mysql_database }} MYSQL_PASSWORD={{ nextcloud_mariadb_password }} MYSQL_USER={{ nextcloud_mariadb_user }} NEXTCLOUD_ADMIN_USER={{ nextcloud_admin_user }} NEXTCLOUD_ADMIN_PASSWORD={{ nextcloud_admin_password }} NEXTCLOUD_TRUSTED_DOMAINS={{ nextcloud_trusted_domains }} SMTP_HOST={{ smtp_host }} SMTP_SECURE={{ smtp_secure }} SMTP_PORT={{ smtp_port }} SMTP_AUTHTYPE={{ smtp_authtype }} SMTP_NAME={{ smtp_name }} SMTP_PASSWORD={{ smtp_password }} MAIL_FROM_ADDRESS={{ mail_from_address }} MAIL_DOMAIN={{ mail_domain }} - name: Provide restic-compose-backup env vars copy: dest: /home/{{ docker_user }}/nextcloud/restic-compose-backup.env owner: "{{ docker_user }}" group: "{{ docker_user }}" mode: '0640' content: | AWS_ACCESS_KEY_ID={{ restic_aws_access_key_id }} AWS_SECRET_ACCESS_KEY={{ restic_aws_secret_access_key }} RESTIC_REPOSITORY={{ restic_repository }} RESTIC_PASSWORD={{ restic_password }} # snapshot prune rules RESTIC_KEEP_DAILY={{ restic_keep_daily}} RESTIC_KEEP_WEEKLY={{ restic_keep_weekly }} RESTIC_KEEP_MONTHLY={{ restic_keep_monthly }} RESTIC_KEEP_YEARLY={{ restic_keep_yearly }} # Cron schedule. Run every day at 1am CRON_SCHEDULE="{{ restic_cron_schedule }}" when: nextcloud_enable_restic_compose_backup == true - name: "docker-compose: Teardown existing Nextcloud service" docker_compose: project_src: "/home/{{ docker_user }}/nextcloud/" state: absent tags: ['never', 'teardown'] - name: "docker-compose: Start Nextcloud service" docker_compose: project_src: "/home/{{ docker_user }}/nextcloud/" register: output tags: service_start - debug: var: output - assert: that: - "output.ansible_facts['nextcloud-app']['nextcloud-app'].state.running" - name: Get container IP set_fact: nextcloud_ip: "{{ output.ansible_facts['nextcloud-app']['nextcloud-app'].networks.nextcloud_default.IPAddress }}" - name: "Waiting for Nextcloud container to become available" become: false wait_for: host: "{{ nextcloud_ip }}" port: 80 - name: "docker-compose: Set overwriteprotocol using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ cmd: docker-compose exec -T -u www-data nextcloud-app /bin/bash -c './occ config:system:set overwriteprotocol --value="{{ nextcloud_overwrite_protocol }}"' - name: "docker-compose: Set overwrite.cli.url using occ" shell: chdir: /home/{{ docker_user }}/nextcloud/ cmd: docker-compose exec -T -u www-data nextcloud-app /bin/bash -c './occ config:system:set overwrite.cli.url --value="{{ nextcloud_overwrite_cli_url }}"' - name: "docker-compose: Set overwritehost using occ" shell: cmd: docker-compose exec -T -u www-data nextcloud-app /bin/bash -c './occ config:system:set overwritehost --value="{{ nextcloud_overwrite_host }}"' chdir: /home/{{ docker_user }}/nextcloud/ - name: "Waiting for Nextcloud service (443/TLS) to become available" become: false wait_for: host: "{{ ansible_ssh_host }}" port: 443 delegate_to: localhost # - name: "Testing whether the Nextcloud homepage is available#" # action: uri url=http://{{ ansible_ssh_host }} return_content=yes # register: gl # - fail: # msg: 'Graylog homepage is not available!' # when: "'Graylog Web Interface' not in gl.content"