diff --git a/playbooks/onlyoffice_documentserver.yml b/playbooks/onlyoffice_documentserver.yml new file mode 100644 index 0000000..47c90d0 --- /dev/null +++ b/playbooks/onlyoffice_documentserver.yml @@ -0,0 +1,6 @@ +--- +- name: Deploy onlyoffice documentserver + hosts: "{{ onlyoffice_documentserver_hosts | default('onlyoffice_documentserver') }}" + become: "{{ onlyoffice_documentserver_become | default(false, true) }}" + roles: + - role: finallycoffee.nextcloud.onlyoffice_documentserver diff --git a/roles/onlyoffice_documentserver/README.md b/roles/onlyoffice_documentserver/README.md new file mode 100644 index 0000000..7abb320 --- /dev/null +++ b/roles/onlyoffice_documentserver/README.md @@ -0,0 +1,4 @@ +# `finallycoffee.nextcloud.onlyoffice_documentserver` ansible role + +Ansible role to deploy [ONLYOFFICE](https://www.onlyoffice.com)'s +document editing server using docker. diff --git a/roles/onlyoffice_documentserver/defaults/main/container.yml b/roles/onlyoffice_documentserver/defaults/main/container.yml new file mode 100644 index 0000000..b0bbe16 --- /dev/null +++ b/roles/onlyoffice_documentserver/defaults/main/container.yml @@ -0,0 +1,44 @@ +--- +onlyoffice_documentserver_container_name: "onlyoffice-documentserver" +onlyoffice_documentserver_container_image: >-2 + {{ + [ + onlyoffice_documentserver_container_image_repository, + onlyoffice_documentserver_container_image_tag + | default(onlyoffice_documentserver_version, true) + ] | join(':') + }} +onlyoffice_documentserver_container_image_registry: docker.io +onlyoffice_documentserver_container_image_namespace: "onlyoffice" +onlyoffice_documentserver_container_image_name: "documentserver" +onlyoffice_documentserver_container_image_repository: >-2 + {{ onlyoffice_documentserver_container_image_registry + + (('/' + onlyoffice_documentserver_container_image_namespace) + if onlyoffice_documentserver_container_image_namespace else '') + + '/' + onlyoffice_documentserver_container_image_name }} +onlyoffice_documentserver_container_image_tag: ~ +onlyoffice_documentserver_container_image_source: pull +onlyoffice_documentserver_container_image_force_source: >-2 + {{ onlyoffice_documentserver_container_image_tag | default(false, true) }} +onlyoffice_documentserver_container_env: {} +onlyoffice_documentserver_container_ports: ~ +onlyoffice_documentserver_container_labels: ~ +onlyoffice_documentserver_container_ulimits: ~ +onlyoffice_documentserver_container_networks: ~ +onlyoffice_documentserver_container_dns_servers: ~ +onlyoffice_documentserver_container_etc_hosts: ~ +onlyoffice_documentserver_container_memory: ~ +onlyoffice_documentserver_container_memory_reservation: ~ +onlyoffice_documentserver_container_memory_swap: ~ + +onlyoffice_documentserver_container_state: >-2 + {{ (onlyoffice_documentserver_state == 'present') + | ternary('started', 'absent') }} +onlyoffice_documentserver_container_restart_policy: "on-failure" + +onlyoffice_documentserver_default_volumes: + - "/var/log/onlyoffice:/var/log/onlyoffice:rw" +onlyoffice_documentserver_volumes: ~ +onlyoffice_documentserver_all_volumes: >-2 + {{ onlyoffice_documentserver_default_volumes | default([], true) + + onlyoffice_documentserver_volumes | default([], true) }} diff --git a/roles/onlyoffice_documentserver/defaults/main/main.yml b/roles/onlyoffice_documentserver/defaults/main/main.yml new file mode 100644 index 0000000..aaab181 --- /dev/null +++ b/roles/onlyoffice_documentserver/defaults/main/main.yml @@ -0,0 +1,6 @@ +--- +onlyoffice_documentserver_user: "onlyoffice" +onlyoffice_documentserver_version: "8.3.2" + +onlyoffice_documentserver_state: present +onlyoffice_documentserver_deployment_method: docker diff --git a/roles/onlyoffice_documentserver/tasks/deploy-docker.yml b/roles/onlyoffice_documentserver/tasks/deploy-docker.yml new file mode 100644 index 0000000..abfbf0d --- /dev/null +++ b/roles/onlyoffice_documentserver/tasks/deploy-docker.yml @@ -0,0 +1,25 @@ +--- +- name: Ensure container image '{{ onlyoffice_documentserver_container_image }}' is {{ onlyoffice_documentserver_state }} + community.docker.docker_image: + name: "{{ onlyoffice_documentserver_container_image }}" + state: "{{ onlyoffice_documentserver_state }}" + source: "{{ onlyoffice_documentserver_container_image_source }}" + force_source: "{{ onlyoffice_documentserver_container_image_force_source }}" + +- name: Ensure container '{{ onlyoffice_documentserver_container_name }}' is {{ onlyoffice_documentserver_container_state }} + community.docker.docker_container: + name: "{{ onlyoffice_documentserver_container_name }}" + image: "{{ onlyoffice_documentserver_container_image }}" + env: "{{ onlyoffice_documentserver_container_env | default(omit, true) }}" + ports: "{{ onlyoffice_documentserver_container_ports | default(omit, true) }}" + labels: "{{ onlyoffice_documentserver_container_labels | default(omit, true) }}" + volumes: "{{ onlyoffice_documentserver_all_volumes }}" + ulimits: "{{ onlyoffice_documentserver_container_ulimits | default(omit, true) }}" + networks: "{{ onlyoffice_documentserver_container_networks | default(omit, true) }}" + dns_servers: "{{ onlyoffice_documentserver_container_dns_servers | default(omit, true) }}" + etc_hosts: "{{ onlyoffice_documentserver_container_etc_hosts | default(omit, true) }}" + memory: "{{ onlyoffice_documentserver_container_memory | default(omit, true) }}" + memory_reservation: "{{ onlyoffice_documentserver_container_memory_reservation | default(omit, true) }}" + memory_swap: "{{ onlyoffice_documentserver_container_memory_swap | default(omit, true) }}" + restart_policy: "{{ onlyoffice_documentserver_container_restart_policy }}" + state: "{{ onlyoffice_documentserver_container_state }}" diff --git a/roles/onlyoffice_documentserver/tasks/main.yml b/roles/onlyoffice_documentserver/tasks/main.yml new file mode 100644 index 0000000..6b27bfc --- /dev/null +++ b/roles/onlyoffice_documentserver/tasks/main.yml @@ -0,0 +1,18 @@ +--- +- name: Ensure 'onlyoffice_documentserver_state' is valid + ansible.builtin.fail: + msg: >-2 + Unsupported state '{{ onlyoffice_documentserver_state }}'. + Supported states are {{ onlyoffice_documentserver_states | join(', ') }}. + when: onlyoffice_documentserver_state not in onlyoffice_documentserver_states + +- name: Ensure 'onlyoffice_documentserver_deployment_method' is valid + ansible.builtin.fail: + msg: >-2 + Unsupported deployment method '{{ onlyoffice_documentserver_deployment_method }}'. + Supported deployment methods are {{ onlyoffice_documentserver_deployment_methods | join(', ') }}. + when: onlyoffice_documentserver_deployment_method not in onlyoffice_documentserver_deployment_methods + +- name: Deploy using {{ onlyoffice_documentserver_deployment_method }} + ansible.builtin.include_tasks: + file: "deploy-{{ onlyoffice_documentserver_deployment_method }}.yml" diff --git a/roles/onlyoffice_documentserver/vars/main.yml b/roles/onlyoffice_documentserver/vars/main.yml new file mode 100644 index 0000000..e352533 --- /dev/null +++ b/roles/onlyoffice_documentserver/vars/main.yml @@ -0,0 +1,6 @@ +--- +onlyoffice_documentserver_states: + - present + - absent +onlyoffice_documentserver_deployment_methods: + - docker