|
|
- ---
- - name: 'install requirements'
- apt:
- pkg:
- - 'postgresql'
- - 'postgresql-contrib'
- - 'python3-psycopg2'
- - 'ca-certificates'
- - 'redis-server'
- - 'rabbitmq-server'
- state: 'present'
- update_cache: true
- cache_valid_time: 3600
-
- - name: 'USERS | create onlyoffice'
- user:
- name: 'onlyoffice'
- system: true
- home: '/opt/onlyoffice'
-
- - name: 'USERS | add www-data to onlyoffice'
- user:
- name: 'www-data'
- groups: 'onlyoffice'
- append: true
-
- - block:
- - name: 'PGSQL | create onlyoffice DB'
- postgresql_db:
- name: 'onlyoffice'
- - name: 'PGSQL | create onlyoffice DB user'
- postgresql_user:
- name: 'onlyoffice'
- db: 'onlyoffice'
- # password: '{{ onlyoffice_pgsql_passwd.passwd }}'
- priv: 'ALL'
- become: true
- become_method: 'su'
- become_user: 'postgres'
-
- #- name: 'install onlyoffice'
- # apt:
- # pkg: 'onlyoffice-documentserver'
- # state: 'present'
- # update_cache: true
- # cache_valid_time: 3600
- - name: 'create onlyoffice folders'
- file:
- path: '{{ item }}'
- state: 'directory'
- owner: 'onlyoffice'
- group: 'onlyoffice'
- loop:
- - '/opt/onlyoffice'
- - '/etc/onlyoffice'
- - '/etc/onlyoffice/documentserver/'
- - '/etc/onlyoffice/documentserver/log4js'
- - '/var/lib/onlyoffice'
- - '/var/lib/onlyoffice/documentserver/'
-
- - name: 'extract onlyoffice documentserver'
- unarchive:
- remote_src: true
- src: '/opt/documentserver.tar.gz'
- dest: '/opt/onlyoffice'
- owner: 'onlyoffice'
- group: 'onlyoffice'
- mode: '0750'
- # creates: '/opt/onlyoffice/documentserver/'
-
- - name: 'PGSQL | init DB'
- shell:
- cmd: 'psql -d onlyoffice < /opt/onlyoffice/documentserver/server/schema/postgresql/createdb.sql'
- register: onlyoffice_pgsql_init
- changed_when: onlyoffice_pgsql_init.stdout != 'CREATE TABLE\nCREATE TABLE\nCREATE FUNCTION'
- become: true
- become_method: 'su'
- become_user: 'onlyoffice'
-
- - name: 'ONLYOFFICE | copy configs'
- copy:
- src: '{{ item.src }}'
- dest: '/etc/onlyoffice/documentserver/{{ item.dest }}'
- notify: 'restart onlyoffice'
- loop:
- - { src: 'production-linux.json', dest: 'production-linux.json' }
- - { src: 'production.json', dest: 'log4js/production.json' }
- - { src: 'default.json', dest: 'default.json' }
-
- - name: 'ONLYOFFICE | generate integration secret'
- gen_passwd: 'length=32'
- register: 'onlyoffice_integration_secret'
- no_log: true
-
- - name: 'ONLYOFFICE | template configs'
- template:
- src: 'local.json.j2'
- dest: '/etc/onlyoffice/documentserver/local.json'
- notify: 'restart onlyoffice'
- no_log: true
-
- - block:
- - name: 'ONLYOFFICE | generate fonts'
- shell:
- cmd: |
- ${PWD}/server/tools/allfontsgen \
- --input="${PWD}/core-fonts" \
- --allfonts-web="${PWD}/sdkjs/common/AllFonts.js" \
- --allfonts="${PWD}/server/FileConverter/bin/AllFonts.js" \
- --images="${PWD}/sdkjs/common/Images" \
- --selection="${PWD}/server/FileConverter/bin/font_selection.bin" \
- --output-web='fonts' \
- --use-system="true"
- chdir: '/opt/onlyoffice/documentserver'
- notify: 'restart onlyoffice'
- - name: 'ONLYOFFICE | generate themes'
- shell:
- cmd: |
- ${PWD}/server/tools/allthemesgen \
- --converter-dir="${PWD}/server/FileConverter/bin" \
- --src="${PWD}/sdkjs/slide/themes" \
- --output="${PWD}/sdkjs/common/Images"
- chdir: '/opt/onlyoffice/documentserver'
- notify: 'restart onlyoffice'
- environment:
- LD_LIBRARY_PATH: '/opt/onlyoffice/documentserver/server/FileConverter/bin'
- become: true
- become_method: 'su'
- become_user: 'onlyoffice'
-
- - name: 'SYSTEMD | create services'
- copy:
- src: '{{ item }}'
- dest: '/etc/systemd/system/{{ item }}'
- loop:
- - 'onlyoffice-ds-docservice.service'
- - 'onlyoffice-ds-converter.service'
- - 'onlyoffice-ds-spellchecker.service'
- - 'onlyoffice-ds.target'
- notify: 'restart onlyoffice'
-
- - name: 'NGINX | create onlyoffice upstreams'
- copy:
- src: 'onlyoffice-ds-http.conf'
- dest: '/etc/nginx/conf.d/onlyoffice-ds-http.conf'
- notify: 'reload nginx'
-
- - name: 'NGINX | create onlyoffice locations'
- copy:
- src: '{{ item }}'
- dest: '/etc/nginx/locations/{{ onlyoffice_nginx_fqdn }}/{{ item }}'
- loop:
- - 'onlyoffice-ds-common.conf'
- - 'onlyoffice-ds-docservice.conf'
- - 'onlyoffice-ds-spellchecker.conf'
- notify: 'reload nginx'
-
- - block:
- - name: 'NEXTCLOUD | get installed apps'
- import_tasks: 'roles/nextcloud/tasks/occ.yaml'
- vars:
- occ_args: 'app:list --output json'
-
- - name: 'NEXTCLOUD | install onlyoffice integration'
- import_tasks: 'roles/nextcloud/tasks/occ.yaml'
- vars:
- occ_args: 'app:install onlyoffice --no-interaction'
- nojson: true
- when:
- - not 'onlyoffice' in occ_out.enabled
- - not 'onlyoffice' in occ_out.disabled
-
- - name: 'NEXTCLOUD | enable onlyoffice integration'
- import_tasks: 'roles/nextcloud/tasks/occ.yaml'
- vars:
- occ_args: 'app:enable onlyoffice'
- nojson: true
- when:
- - true and 'onlyoffice' in occ_out.disabled
-
- - name: 'NEXTCLOUD | configure onlyoffice integration'
- occ:
- command: 'config:app:set'
- key: 'onlyoffice {{ item.key }}'
- value: '{{ item.value }}'
- loop: '{{ onlyoffice_nextcloud_settings|dict2items }}'
- vars:
- onlyoffice_nextcloud_settings:
- DocumentServerUrl: 'https://{{ onlyoffice_nginx_fqdn }}/'
- jwt_secret: '{{ onlyoffice_integration_secret.passwd }}'
- no_log: true
-
- delegate_to: '{{ nextcloud_host }}'
- tags:
- - integration
- ...
|