From a857eb82ec9c4a79ad5e41462e2ab82c2660982e Mon Sep 17 00:00:00 2001 From: Kumar Date: Tue, 23 Nov 2021 09:59:08 -0500 Subject: initial commit --- roles/seafile_docker/defaults/main.yaml | 14 +++++ roles/seafile_docker/files/ccnet.conf | 2 + roles/seafile_docker/files/seafdav.conf | 6 +++ roles/seafile_docker/files/seafile.service | 14 +++++ roles/seafile_docker/files/seahub.service | 13 +++++ roles/seafile_docker/tasks/main.yaml | 49 +++++++++++++++++ .../templates/docker-compose.yaml.j2 | 61 ++++++++++++++++++++++ 7 files changed, 159 insertions(+) create mode 100644 roles/seafile_docker/defaults/main.yaml create mode 100644 roles/seafile_docker/files/ccnet.conf create mode 100644 roles/seafile_docker/files/seafdav.conf create mode 100644 roles/seafile_docker/files/seafile.service create mode 100644 roles/seafile_docker/files/seahub.service create mode 100644 roles/seafile_docker/tasks/main.yaml create mode 100644 roles/seafile_docker/templates/docker-compose.yaml.j2 (limited to 'roles/seafile_docker') diff --git a/roles/seafile_docker/defaults/main.yaml b/roles/seafile_docker/defaults/main.yaml new file mode 100644 index 0000000..ed7cad3 --- /dev/null +++ b/roles/seafile_docker/defaults/main.yaml @@ -0,0 +1,14 @@ +# Default Values +--- + +seafile_image_repo: 'docker.seadrive.org' +seafile_image_name: '{{ seafile_image_repo }}/seafileltd/seafile-pro-mc' +seafile_image_tag: 'latest' +seafile_image_user: 'seafile' +seafile_image_password: '' +seafile_data_root: '{{ data_vol_path }}/seafile' +seafile_mysql_root_password: '' +seafile_timezone: 'America/Toronto' +seafile_admin_email: '' +seafile_admin_password: '' +seafile_listen_port: '' diff --git a/roles/seafile_docker/files/ccnet.conf b/roles/seafile_docker/files/ccnet.conf new file mode 100644 index 0000000..b1b35fd --- /dev/null +++ b/roles/seafile_docker/files/ccnet.conf @@ -0,0 +1,2 @@ +[General] +SERVICE_URL = http://{{ inventory_hostname }}/seafile diff --git a/roles/seafile_docker/files/seafdav.conf b/roles/seafile_docker/files/seafdav.conf new file mode 100644 index 0000000..8ce50cf --- /dev/null +++ b/roles/seafile_docker/files/seafdav.conf @@ -0,0 +1,6 @@ +[WEBDAV] +enabled = true +port = 8080 +fastcgi = false +host = 0.0.0.0 +share_name = /seafdav diff --git a/roles/seafile_docker/files/seafile.service b/roles/seafile_docker/files/seafile.service new file mode 100644 index 0000000..593ae64 --- /dev/null +++ b/roles/seafile_docker/files/seafile.service @@ -0,0 +1,14 @@ +[Unit] +Description=Seafile +After=network.target + +[Service] +Type=forking +ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start +ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop +LimitNOFILE=infinity +User=seafserver +Group=seafserver + +[Install] +WantedBy=multi-user.target diff --git a/roles/seafile_docker/files/seahub.service b/roles/seafile_docker/files/seahub.service new file mode 100644 index 0000000..83afd48 --- /dev/null +++ b/roles/seafile_docker/files/seahub.service @@ -0,0 +1,13 @@ +[Unit] +Description=Seahub +After=network.target seafile.service + +[Service] +Type=forking +ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start +ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop +User=seafserver +Group=seafserver + +[Install] +WantedBy=multi-user.target diff --git a/roles/seafile_docker/tasks/main.yaml b/roles/seafile_docker/tasks/main.yaml new file mode 100644 index 0000000..b40e2fc --- /dev/null +++ b/roles/seafile_docker/tasks/main.yaml @@ -0,0 +1,49 @@ +# https://manual.seafile.com/docker/pro-edition/deploy_seafile_pro_with_docker/ +--- + +- name: 'Ensure required vars exist' + assert: + that: item | mandatory + loop: + - '{{ data_vol_path }}' + - '{{ seafile_image_repo }}' + - '{{ seafile_image_name }}' + - '{{ seafile_image_tag }}' + - '{{ seafile_image_user }}' + - '{{ seafile_image_password }}' + - '{{ seafile_data_root }}' + - '{{ seafile_mysql_root_password }}' + - '{{ seafile_timezone }}' + - '{{ seafile_admin_email }}' + - '{{ seafile_admin_password }}' + - '{{ seafile_listen_port }}' + no_log: true + +- name: 'Log into DockerHub' + community.docker.docker_login: + registry_url: '{{ seafile_image_repo }}' + username: '{{ seafile_image_user }}' + password: '{{ seafile_image_password }}' + +- name: 'Pull Seafile Pro image' + community.docker.docker_image: + name: '{{ seafile_image_name }}' + tag: '{{ seafile_image_tag }}' + state: 'present' + source: 'pull' + +- name: 'Ensure Seafile data dir exists' + file: + path: '{{ seafile_data_root }}' + state: 'directory' + mode: '755' + +- name: 'Copy Seafile docker compose config to seafile dir' + template: + dest: '{{ seafile_data_root }}/docker-compose.yaml' + src: 'docker-compose.yaml.j2' + mode: '644' + +- name: 'Create and start services' + community.docker.docker_compose: + project_src: '{{ seafile_data_root }}' diff --git a/roles/seafile_docker/templates/docker-compose.yaml.j2 b/roles/seafile_docker/templates/docker-compose.yaml.j2 new file mode 100644 index 0000000..3dd34b3 --- /dev/null +++ b/roles/seafile_docker/templates/docker-compose.yaml.j2 @@ -0,0 +1,61 @@ +version: '2.0' +services: + db: + image: mariadb:10.5 + container_name: seafile-mysql + environment: + - MYSQL_ROOT_PASSWORD={{ seafile_mysql_root_password }} + - MYSQL_LOG_CONSOLE=true + volumes: + - {{ seafile_data_root }}/seafile-mysql/db:/var/lib/mysql + networks: + - seafile-net + + memcached: + image: memcached:1.5.6 + container_name: seafile-memcached + entrypoint: memcached -m 256 + networks: + - seafile-net + + elasticsearch: + image: seafileltd/elasticsearch-with-ik:5.6.16 + container_name: seafile-elasticsearch + environment: + - discovery.type=single-node + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms1g -Xmx1g" + ulimits: + memlock: + soft: -1 + hard: -1 + mem_limit: 2g + volumes: + - {{ seafile_data_root }}/seafile-elasticsearch/data:/usr/share/elasticsearch/data + networks: + - seafile-net + + seafile: + image: {{ seafile_image_name }}:{{ seafile_image_tag }} + container_name: seafile + ports: + - "{{ seafile_listen_port }}:80" + volumes: + - {{ seafile_data_root }}/seafile-data:/shared + environment: + - DB_HOST=db + - DB_ROOT_PASSWD={{ seafile_mysql_root_password }} + - TIME_ZONE={{ seafile_timezone }} + - SEAFILE_ADMIN_EMAIL={{ seafile_admin_email }} + - SEAFILE_ADMIN_PASSWORD={{ seafile_admin_password }} + - SEAFILE_SERVER_LETSENCRYPT=false + #- SEAFILE_SERVER_HOSTNAME=example.seafile.com # Specifies your host name if https is enabled + depends_on: + - db + - memcached + - elasticsearch + networks: + - seafile-net + +networks: + seafile-net: -- cgit v1.2.3