92 lines
2.8 KiB
YAML
92 lines
2.8 KiB
YAML
---
|
|
# ------------------------------------------------------------------------------
|
|
# FILE: playbooks/day1_deploy_nextcloud.yml
|
|
# DESCRIPTION: Deploys Nextcloud on the-grid
|
|
# Runs: docker-host → nextcloud
|
|
#
|
|
# USAGE:
|
|
# ansible-playbook -i inventory.yml playbooks/day1_deploy_nextcloud.yml
|
|
# ansible-playbook -i inventory.yml playbooks/day1_deploy_nextcloud.yml --limit the-grid
|
|
#
|
|
# SECRETS REQUIRED IN VAULT (group_vars/all/vault):
|
|
# vault_nextcloud_db_root_password
|
|
# vault_nextcloud_db_password
|
|
# vault_nextcloud_admin_user
|
|
# vault_nextcloud_admin_password
|
|
# ------------------------------------------------------------------------------
|
|
|
|
- name: Deploy Nextcloud on the-grid
|
|
hosts: the-grid
|
|
become: true
|
|
|
|
vars:
|
|
# NFS prerequisite
|
|
nfs_packages:
|
|
- nfs-common
|
|
|
|
# Compose stack location
|
|
nextcloud_base_dir: /opt/docker/nextcloud
|
|
|
|
# Secrets from vault
|
|
nextcloud_db_root_password: "{{ vault_nextcloud_db_root_password }}"
|
|
nextcloud_db_password: "{{ vault_nextcloud_db_password }}"
|
|
nextcloud_admin_user: "{{ vault_nextcloud_admin_user }}"
|
|
nextcloud_admin_password: "{{ vault_nextcloud_admin_password }}"
|
|
|
|
pre_tasks:
|
|
- name: Install NFS client
|
|
ansible.builtin.apt:
|
|
name: "{{ nfs_packages }}"
|
|
state: present
|
|
update_cache: true
|
|
|
|
roles:
|
|
- role: docker-host
|
|
|
|
tasks:
|
|
- name: Create Nextcloud directory
|
|
ansible.builtin.file:
|
|
path: "{{ nextcloud_base_dir }}"
|
|
state: directory
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: "0775"
|
|
|
|
- name: Deploy Compose file
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/../../boilerplates/nextcloud/compose.yml"
|
|
dest: "{{ nextcloud_base_dir }}/compose.yml"
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: "0644"
|
|
|
|
- name: Deploy .env from vault
|
|
ansible.builtin.copy:
|
|
content: |
|
|
# Managed by Ansible — do not edit manually
|
|
MYSQL_ROOT_PASSWORD={{ nextcloud_db_root_password }}
|
|
MYSQL_PASSWORD={{ nextcloud_db_password }}
|
|
NEXTCLOUD_ADMIN_USER={{ nextcloud_admin_user }}
|
|
NEXTCLOUD_ADMIN_PASSWORD={{ nextcloud_admin_password }}
|
|
dest: "{{ nextcloud_base_dir }}/.env"
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: "0600"
|
|
|
|
- name: Start Nextcloud stack
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ nextcloud_base_dir }}"
|
|
state: present
|
|
|
|
- name: Wait for Nextcloud to become ready
|
|
ansible.builtin.uri:
|
|
url: "http://the-grid.local.mk-labs.cloud/status.php"
|
|
status_code: 200
|
|
return_content: true
|
|
register: nextcloud_status
|
|
until: >
|
|
nextcloud_status.status == 200 and
|
|
(nextcloud_status.content | from_json).installed == true
|
|
retries: 20
|
|
delay: 15
|