diff --git a/roles/opencloud/defaults/main.yml b/roles/opencloud/defaults/main.yml index 7a65c3e..67ef6a4 100644 --- a/roles/opencloud/defaults/main.yml +++ b/roles/opencloud/defaults/main.yml @@ -1,3 +1,24 @@ #SPDX-License-Identifier: MIT-0 --- # defaults file for opencloud + +# Base directory configuration (inherited from base role or defined here) +docker_compose_base_dir: /etc/docker/compose +docker_volume_base_dir: /srv/data + +# OpenCloud-specific configuration +opencloud_service_name: opencloud +opencloud_docker_compose_dir: "{{ docker_compose_base_dir }}/{{ opencloud_service_name }}" +opencloud_docker_volume_dir: "{{ docker_volume_base_dir }}/{{ opencloud_service_name }}" + +# Service configuration +opencloud_domain: "opencloud.local.test" +opencloud_image: "opencloudeu/opencloud:latest" +opencloud_port: 9200 +opencloud_admin_password: "admin" +opencloud_log_level: "warn" +opencloud_extra_hosts: [] + +# Traefik configuration +opencloud_traefik_network: "proxy" +opencloud_use_ssl: true \ No newline at end of file diff --git a/roles/opencloud/handlers/main.yml b/roles/opencloud/handlers/main.yml index 335615c..95b6986 100644 --- a/roles/opencloud/handlers/main.yml +++ b/roles/opencloud/handlers/main.yml @@ -1,3 +1,8 @@ #SPDX-License-Identifier: MIT-0 --- # handlers file for opencloud + +- name: restart opencloud + community.docker.docker_compose_v2: + project_src: "{{ opencloud_docker_compose_dir }}" + state: restarted \ No newline at end of file diff --git a/roles/opencloud/tasks/main.yml b/roles/opencloud/tasks/main.yml index 7d7408c..65b4c70 100644 --- a/roles/opencloud/tasks/main.yml +++ b/roles/opencloud/tasks/main.yml @@ -1,3 +1,33 @@ #SPDX-License-Identifier: MIT-0 --- # tasks file for opencloud + +- name: Create docker compose directory + file: + path: "{{ opencloud_docker_compose_dir }}" + state: directory + mode: '0755' + +- name: Create opencloud data directory + file: + path: "{{ opencloud_docker_volume_dir }}/data" + state: directory + mode: '0755' + +- name: Create opencloud config directory + file: + path: "{{ opencloud_docker_volume_dir }}/config" + state: directory + mode: '0755' + +- name: Create docker-compose file for opencloud + template: + src: docker-compose.yml.j2 + dest: "{{ opencloud_docker_compose_dir }}/docker-compose.yml" + mode: '0644' + notify: restart opencloud + +- name: Start opencloud container + community.docker.docker_compose_v2: + project_src: "{{ opencloud_docker_compose_dir }}" + state: present \ No newline at end of file diff --git a/roles/opencloud/templates/docker-compose.yml.j2 b/roles/opencloud/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..bc6d2c9 --- /dev/null +++ b/roles/opencloud/templates/docker-compose.yml.j2 @@ -0,0 +1,44 @@ +services: + opencloud: + image: {{ opencloud_image }} + container_name: {{ opencloud_service_name }} + restart: unless-stopped + entrypoint: + - /bin/sh + command: ["-c", "opencloud init || true; opencloud server"] + volumes: + - {{ opencloud_docker_volume_dir }}/config:/etc/ocis + - {{ opencloud_docker_volume_dir }}/data:/var/lib/ocis + environment: +{% if opencloud_use_ssl %} + OC_URL: "https://{{ opencloud_domain }}" +{% else %} + OC_URL: "http://{{ opencloud_domain }}" +{% endif %} + OC_INSECURE: "true" + OC_LOG_LEVEL: "{{ opencloud_log_level }}" + PROXY_TLS: "false" + IDM_ADMIN_PASSWORD: "{{ opencloud_admin_password }}" + networks: + - {{ opencloud_traefik_network }} +{% if opencloud_extra_hosts is defined and opencloud_extra_hosts | length > 0 %} + extra_hosts: +{% for host in opencloud_extra_hosts %} + - "{{ host }}" +{% endfor %} +{% endif %} + labels: + - traefik.enable=true + - traefik.docker.network={{ opencloud_traefik_network }} + - traefik.http.routers.{{ opencloud_service_name }}.rule=Host(`{{ opencloud_domain }}`) +{% if opencloud_use_ssl %} + - traefik.http.routers.{{ opencloud_service_name }}.entrypoints=websecure + - traefik.http.routers.{{ opencloud_service_name }}.tls=true +{% else %} + - traefik.http.routers.{{ opencloud_service_name }}.entrypoints=web +{% endif %} + - traefik.http.services.{{ opencloud_service_name }}.loadbalancer.server.port={{ opencloud_port }} + +networks: + {{ opencloud_traefik_network }}: + external: true \ No newline at end of file