Initial version of nextcloud collection
Signed-off-by: Nis Wechselberg <enbewe@enbewe.de>
This commit is contained in:
parent
e559257349
commit
87eac5bded
13 changed files with 911 additions and 0 deletions
209
roles/nextcloud/tasks/main.yml
Normal file
209
roles/nextcloud/tasks/main.yml
Normal file
|
@ -0,0 +1,209 @@
|
|||
---
|
||||
- name: 'Ensure needed software is installed'
|
||||
become: true
|
||||
ansible.builtin.apt:
|
||||
name: 'podman'
|
||||
state: 'present'
|
||||
|
||||
- name: 'Prepare nextcloud network'
|
||||
become: true
|
||||
containers.podman.podman_network:
|
||||
name: '{{ nextcloud_podman_network }}'
|
||||
state: 'quadlet'
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud network'
|
||||
|
||||
- name: 'Create nextcloud volumes'
|
||||
become: true
|
||||
containers.podman.podman_volume:
|
||||
name: '{{ item }}'
|
||||
state: 'quadlet'
|
||||
loop:
|
||||
- '{{ nextcloud_app_volume }}'
|
||||
- '{{ nextcloud_db_volume }}'
|
||||
- '{{ nextcloud_redis_volume }}'
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud volumes'
|
||||
|
||||
- name: 'Define nextcloud-db image'
|
||||
become: true
|
||||
containers.podman.podman_image:
|
||||
name: '{{ nextcloud_db_image_name }}:{{ nextcloud_db_image_tag }}'
|
||||
quadlet_filename: 'nextcloud-db'
|
||||
state: 'quadlet'
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud-db image'
|
||||
|
||||
- name: 'Define nextcloud-redis image'
|
||||
become: true
|
||||
containers.podman.podman_image:
|
||||
name: '{{ nextcloud_redis_image_name }}:{{ nextcloud_redis_image_tag }}'
|
||||
quadlet_filename: 'nextcloud-redis'
|
||||
state: 'quadlet'
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud-redis image'
|
||||
|
||||
- name: 'Define nextcloud-app image'
|
||||
become: true
|
||||
containers.podman.podman_image:
|
||||
name: '{{ nextcloud_app_image_name }}:{{ nextcloud_app_image_tag }}'
|
||||
quadlet_filename: 'nextcloud-app'
|
||||
state: 'quadlet'
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud-app image'
|
||||
|
||||
- name: 'Prepare nextcloud config files location'
|
||||
become: true
|
||||
ansible.builtin.file:
|
||||
path: '/etc/nextcloud'
|
||||
state: 'directory'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: 'u=rwx,g=rx,o=rx'
|
||||
|
||||
- name: 'Create config files for nextcloud'
|
||||
become: true
|
||||
ansible.builtin.template:
|
||||
src: '{{ item.src }}'
|
||||
dest: '{{ item.dest }}'
|
||||
owner: 33
|
||||
group: 33
|
||||
mode: '{{ item.mode }}'
|
||||
notify:
|
||||
- 'Restart nextcloud-app container'
|
||||
# - 'Restart nextcloud-cron container'
|
||||
loop:
|
||||
- src: 'oidc.config.php.j2'
|
||||
dest: '/etc/nextcloud/oidc.config.php'
|
||||
mode: 'u=rw,g=r,o=r'
|
||||
- src: 'ansible.config.php.j2'
|
||||
dest: '/etc/nextcloud/ansible.config.php'
|
||||
mode: 'u=rw,g=r,o=r'
|
||||
- src: 'copy_config.sh.j2'
|
||||
dest: '/etc/nextcloud/copy_config.sh'
|
||||
mode: 'u=rwx,g=rx,o=rx'
|
||||
|
||||
- name: 'Create nextcloud-db container'
|
||||
become: true
|
||||
containers.podman.podman_container:
|
||||
name: '{{ nextcloud_db_container_name }}'
|
||||
image: 'nextcloud-db.image'
|
||||
network: '{{ nextcloud_podman_network }}.network'
|
||||
state: 'quadlet'
|
||||
volume:
|
||||
- '{{ nextcloud_db_volume }}.volume:/var/lib/postgresql/data/'
|
||||
env:
|
||||
POSTGRES_DB: '{{ nextcloud_db_database }}'
|
||||
POSTGRES_USER: '{{ nextcloud_db_user }}'
|
||||
POSTGRES_PASSWORD: '{{ nextcloud_db_password }}'
|
||||
quadlet_options: |
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
[Unit]
|
||||
Requires={{ nextcloud_podman_network }}-network.service
|
||||
Requires={{ nextcloud_db_volume }}-volume.service
|
||||
After={{ nextcloud_podman_network }}-network.service
|
||||
After={{ nextcloud_db_volume }}-volume.service
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud-db container'
|
||||
|
||||
- name: 'Create nextcloud-redis container'
|
||||
become: true
|
||||
containers.podman.podman_container:
|
||||
name: '{{ nextcloud_redis_container_name }}'
|
||||
image: 'nextcloud-redis.image'
|
||||
network: '{{ nextcloud_podman_network }}.network'
|
||||
state: 'quadlet'
|
||||
volume:
|
||||
- '{{ nextcloud_redis_volume }}.volume:/data'
|
||||
quadlet_options: |
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
[Unit]
|
||||
Requires={{ nextcloud_podman_network }}-network.service
|
||||
Requires={{ nextcloud_redis_volume }}-volume.service
|
||||
After={{ nextcloud_podman_network }}-network.service
|
||||
After={{ nextcloud_redis_volume }}-volume.service
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud-redis container'
|
||||
|
||||
# - name: 'Create nextcloud-cron container'
|
||||
# become: true
|
||||
# containers.podman.podman_container:
|
||||
# name: '{{ nextcloud_cron_container_name }}'
|
||||
# image: 'nextcloud-app.image'
|
||||
# network: '{{ nextcloud_podman_network }}.network'
|
||||
# state: 'quadlet'
|
||||
# entrypoint: '/cron.sh'
|
||||
# volume:
|
||||
# - '{{ nextcloud_app_volume }}.volume:/var/www/html'
|
||||
# - '/etc/nextcloud/oidc.config.php:/docker-entrypoint-hooks.d/before-starting/oidc.config.php'
|
||||
# - '/etc/nextcloud/copy_config.sh:/docker-entrypoint-hooks.d/before-starting/copy_config.sh'
|
||||
# quadlet_options: |
|
||||
# [Install]
|
||||
# WantedBy=default.target
|
||||
# [Unit]
|
||||
# Requires={{ nextcloud_podman_network }}-network.service
|
||||
# Requires={{ nextcloud_app_volume }}-volume.service
|
||||
# Requires=nextcloud-db.service
|
||||
# Requires=nextcloud-redis.service
|
||||
# After={{ nextcloud_podman_network }}-network.service
|
||||
# After={{ nextcloud_app_volume }}-volume.service
|
||||
# After=nextcloud-db.service
|
||||
# After=nextcloud-redis.service
|
||||
# notify:
|
||||
# - 'Reload nextcloud services'
|
||||
# - 'Restart nextcloud-cron container'
|
||||
|
||||
- name: 'Create nextcloud-app container'
|
||||
become: true
|
||||
containers.podman.podman_container:
|
||||
name: '{{ nextcloud_app_container_name }}'
|
||||
image: 'nextcloud-app.image'
|
||||
network: '{{ nextcloud_podman_network }}.network'
|
||||
state: 'quadlet'
|
||||
volume:
|
||||
- '{{ nextcloud_app_volume }}.volume:/var/www/html'
|
||||
- '/etc/nextcloud/oidc.config.php:/docker-entrypoint-hooks.d/before-starting/oidc.config.php'
|
||||
- '/etc/nextcloud/ansible.config.php:/docker-entrypoint-hooks.d/before-starting/ansible.config.php'
|
||||
- '/etc/nextcloud/copy_config.sh:/docker-entrypoint-hooks.d/before-starting/copy_config.sh'
|
||||
env: '{{ nextcloud_app_environments }}'
|
||||
quadlet_options: |
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
[Unit]
|
||||
Requires={{ nextcloud_podman_network }}-network.service
|
||||
Requires={{ nextcloud_app_volume }}-volume.service
|
||||
Requires=nextcloud-db.service
|
||||
Requires=nextcloud-redis.service
|
||||
After={{ nextcloud_podman_network }}-network.service
|
||||
After={{ nextcloud_app_volume }}-volume.service
|
||||
After=nextcloud-db.service
|
||||
After=nextcloud-redis.service
|
||||
notify:
|
||||
- 'Reload nextcloud services'
|
||||
- 'Restart nextcloud-app container'
|
||||
|
||||
- name: 'Flush handlers'
|
||||
ansible.builtin.meta: flush_handlers
|
||||
|
||||
- name: 'Configure apps'
|
||||
become: true
|
||||
enbewe.nextcloud.nextcloud_app:
|
||||
state: '{{ item.key }}'
|
||||
name: '{{ item.value }}'
|
||||
force: true
|
||||
container_name: '{{ nextcloud_app_container_name }}'
|
||||
retries: 30
|
||||
delay: 10
|
||||
notify:
|
||||
# - 'Restart nextcloud-cron container'
|
||||
- 'Restart nextcloud-app container'
|
||||
loop: '{{ nextcloud_apps | dict2items }}'
|
Loading…
Add table
Add a link
Reference in a new issue