homelab/roles/nextcloud/tasks/main.yml

79 lines
2.6 KiB
YAML

- name: Create Docker container bind mount directories
file:
path: ["{{ nextcloud_root }}",
"{{ nextcloud_dbroot }}"]
state: directory
- name: Start Nextcloud's database container
docker_container:
name: "{{ nextcloud_dbcontainer }}"
image: mariadb:{{ nextcloud_dbversion }}
restart_policy: always
volumes: "{{ nextcloud_dbroot }}:/var/lib/mysql"
env:
MYSQL_RANDOM_ROOT_PASSWORD: "true"
MYSQL_DATABASE: "{{ nextcloud_dbname }}"
MYSQL_USER: "{{ nextcloud_dbuser }}"
MYSQL_PASSWORD: "{{ nextcloud_dbpass }}"
- name: Start Nextcloud container
docker_container:
name: "{{ nextcloud_container }}"
image: nextcloud:{{ nextcloud_version }}
restart_policy: always
volumes: "{{ nextcloud_root }}:/var/www/html"
ports: 80:80
links: "{{ nextcloud_dbcontainer }}:mysql"
- name: Grab Nextcloud container information
docker_container_info:
name: "{{ nextcloud_container }}"
register: nextcloud_info
- name: Wait for Nextcloud to become available
wait_for:
host: "{{ nextcloud_info.container.NetworkSettings.IPAddress }}"
port: 80
- name: Check Nextcloud status
command: "docker exec --user www-data {{ nextcloud_container }}
php occ status"
register: nextcloud_status
args:
removes: "{{ nextcloud_root }}/config/CAN_INSTALL"
- name: Install Nextcloud
command: 'docker exec --user www-data {{ nextcloud_container }}
php occ maintenance:install
--database "mysql"
--database-host "{{ nextcloud_dbcontainer }}"
--database-name "{{ nextcloud_dbname }}"
--database-user "{{ nextcloud_dbuser }}"
--database-pass "{{ nextcloud_dbpass }}"
--admin-user "{{ nextcloud_admin }}"
--admin-pass "{{ nextcloud_pass }}"'
register: nextcloud_install
when:
- nextcloud_status.stdout[:26] == "Nextcloud is not installed"
- nextcloud_domain is defined
- name: Set Nextcloud's Trusted Domain
command: 'docker exec --user www-data {{ nextcloud_container }}
php occ config:system:set trusted_domains 0
--value="{{ nextcloud_domain }}"'
when: nextcloud_install.changed
- name: Preform Nextcloud database maintenance
command: "docker exec --user www-data {{ nextcloud_container }} {{ item }}"
loop:
- "php occ maintenance:mode --on"
- "php occ db:add-missing-indices"
- "php occ db:convert-filecache-bigint"
- "php occ maintenance:mode --off"
when: nextcloud_install.changed
- name: Remove Nextcloud's CAN_INSTALL file
file:
path: "{{ nextcloud_root }}/config/CAN_INSTALL"
state: absent