- name: Install MySQL module for Ansible ansible.builtin.apt: name: python3-pymysql state: present - name: Create Nextcloud database community.mysql.mysql_db: name: "{{ nextcloud.DB_NAME | default('nextcloud') }}" state: present login_unix_socket: /var/run/mysqld/mysqld.sock - name: Create Nextcloud database user community.mysql.mysql_user: name: "{{ nextcloud.DB_USER | default('nextcloud') }}" password: "{{ nextcloud.DB_PASSWD }}" host: '%' state: present priv: "{{ nextcloud.DB_NAME | default('nextcloud') }}.*:ALL" login_unix_socket: /var/run/mysqld/mysqld.sock - name: Start Nextcloud service and enable on boot ansible.builtin.service: name: "{{ docker_compose_service }}@{{ nextcloud_name }}" state: started enabled: true when: nextcloud.ENABLE | default('false') - name: Grab Nextcloud container information community.general.docker_container_info: name: "{{ nextcloud_name }}" register: nextcloud_info - name: Wait for Nextcloud to become available ansible.builtin.wait_for: host: "{{ nextcloud_info.container.NetworkSettings.Networks.traefik.IPAddress }}" delay: 10 port: 80 - name: Check Nextcloud status ansible.builtin.command: > docker exec --user www-data "{{ nextcloud_name }}" php occ status register: nextcloud_status changed_when: false - name: Install Nextcloud ansible.builtin.command: > docker exec --user www-data {{ nextcloud_name }} php occ maintenance:install --database "mysql" --database-host "{{ nextcloud.DB_HOST | default('host.docker.internal') }}" --database-name "{{ nextcloud.DB_NAME | default('nextcloud') }}" --database-user "{{ nextcloud.DB_USER | default('nextcloud') }}" --database-pass "{{ nextcloud.DB_PASSWD }}" --admin-user "{{ nextcloud.ADMIN_USER | default('admin') }}" --admin-pass "{{ nextcloud.ADMIN_PASSWD }}" register: nextcloud_install when: nextcloud_status.stderr[:26] == "Nextcloud is not installed" changed_when: nextcloud_install.stdout == "Nextcloud was successfully installed" notify: install_nextcloud - name: Install Nextcloud background jobs cron ansible.builtin.cron: name: Nextcloud background job minute: "*/5" job: "/usr/bin/docker exec -u www-data nextcloud /usr/local/bin/php -f /var/www/html/cron.php" user: root