126 lines
4.1 KiB
YAML
126 lines
4.1 KiB
YAML
---
|
|
- name: Check if install from backup is already done
|
|
stat:
|
|
path: /mnt/volumes/install_states/nextcloud_installed
|
|
register: nextcloud_installed_flag
|
|
|
|
- name: Setup volume
|
|
ansible.builtin.include_role:
|
|
name: role_setup_volume
|
|
vars:
|
|
volume: "{{ item }}"
|
|
with_items:
|
|
- name: nextcloud
|
|
size: 10
|
|
vol_type: high-speed
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: change ownership of duplicity working directories
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
owner: "{{ LINUX_USERNAME }}"
|
|
group: "{{ LINUX_USERNAME }}"
|
|
become: true
|
|
with_items:
|
|
- "{{ DUPLICITY_WORKDIR }}"
|
|
- "{{ DUPLICITY_ARCHIVE_DIR }}"
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: restore volume backup
|
|
ansible.builtin.command:
|
|
cmd: "duplicity restore --archive-dir {{ DUPLICITY_ARCHIVE_DIR }} --name {{ item }} swift://{{ item }} /mnt/volumes/{{ item }}/data"
|
|
environment:
|
|
SWIFT_USERNAME: "{{ OS_USERNAME }}"
|
|
SWIFT_PASSWORD: "{{ OS_PASSWORD }}"
|
|
SWIFT_AUTHURL: "{{ OS_AUTH_URL }}"
|
|
SWIFT_REGIONNAME: "{{ SWIFT_REGIONNAME }}"
|
|
SWIFT_TENANTNAME: "{{ OS_TENANT_NAME }}"
|
|
SWIFT_AUTHVERSION: "{{ OS_IDENTITY_API_VERSION }}"
|
|
PASSPHRASE: "{{ DUPLICITY_PASSPHRASE}}"
|
|
# /usr/bin/duplicity uses "-s" python argument to prevent loading modules from user's python directory,
|
|
# this variable will override that.
|
|
PYTHONPATH: ".local/lib/python3.9/site-packages"
|
|
register: duplicity_result
|
|
become: true
|
|
with_items:
|
|
- nextcloud
|
|
failed_when: duplicity_result is failed and (duplicity_result.rc is not defined or duplicity_result.rc != 11)
|
|
changed_when: duplicity_result.rc is defined and duplicity_result.rc == 0
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Create /usr/local/docker-mounted-files/docker-nextcloud-stack directory
|
|
ansible.builtin.file:
|
|
path: "/usr/local/docker-mounted-files/docker-nextcloud-stack"
|
|
state: directory
|
|
mode: '0755'
|
|
become: true
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Deploy custom files
|
|
ansible.builtin.copy:
|
|
src: "{{ item }}"
|
|
dest: "/usr/local/docker-mounted-files/docker-nextcloud-stack/{{ item }}"
|
|
register: custom_conf_register
|
|
become: true
|
|
with_items:
|
|
- supervisord.conf
|
|
- run_elasticsearch.sh
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Login to {{ private_registry_domain }} and create ${XDG_RUNTIME_DIR}/containers/auth.json
|
|
containers.podman.podman_login:
|
|
username: "{{ private_registry_user }}"
|
|
password: "{{ private_registry_password }}"
|
|
registry: "{{ private_registry_domain }}"
|
|
become: true
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Create podman networks
|
|
containers.podman.podman_network:
|
|
name: "{{ item }}"
|
|
become: true
|
|
with_items:
|
|
- reverse-proxy
|
|
- mysqlnet
|
|
- mailnet
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Create nextcloud container
|
|
containers.podman.podman_container:
|
|
name: nextcloud
|
|
image: "{{ private_registry_domain }}/nextcloud:19.0.13-apache-full"
|
|
network:
|
|
- reverse-proxy
|
|
- mysqlnet
|
|
- mailnet
|
|
volume:
|
|
- /mnt/volumes/nextcloud/data:/var/www/html:Z
|
|
- /usr/local/docker-mounted-files/docker-nextcloud-stack/supervisord.conf:/supervisord.conf:z
|
|
- /usr/local/docker-mounted-files/docker-nextcloud-stack/run_elasticsearch.sh:/run_elasticsearch.sh:z
|
|
become: true
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Add cloud.{{ DOMAIN }} to /etc/hosts
|
|
ansible.builtin.lineinfile:
|
|
path: "/etc/hosts"
|
|
line: "127.0.0.1 cloud.{{ DOMAIN }} cloud"
|
|
become: true
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
# A local volume is needed to store install states
|
|
- name: Create /mnt/volumes/install_states directory if it does not exist
|
|
ansible.builtin.file:
|
|
path: "/mnt/volumes/install_states"
|
|
state: directory
|
|
mode: '0755'
|
|
become: true
|
|
when: not nextcloud_installed_flag.stat.exists
|
|
|
|
- name: Create nextcloud_installed state file
|
|
ansible.builtin.file:
|
|
path: "/mnt/volumes/install_states/nextcloud_installed"
|
|
state: touch
|
|
mode: '0755'
|
|
become: true
|
|
when: not nextcloud_installed_flag.stat.exists
|