- name: 'install requirements'
|
|
apt:
|
|
pkg:
|
|
- 'sudo'
|
|
- 'bzip2'
|
|
- 'php7.3-fpm'
|
|
- 'php7.3-common'
|
|
- 'php7.3-xml'
|
|
- 'php7.3-gd'
|
|
- 'php7.3-json'
|
|
- 'php7.3-mbstring'
|
|
- 'php7.3-zip'
|
|
- 'php7.3-pgsql'
|
|
- 'php7.3-ldap'
|
|
- 'php7.3-curl'
|
|
- 'php7.3-intl'
|
|
- 'php7.3-bz2'
|
|
#- 'php7.3.-imagick'
|
|
#- 'ffmpeg'
|
|
- 'postgresql'
|
|
- 'postgresql-contrib'
|
|
- 'python3-psycopg2'
|
|
- 'ca-certificates'
|
|
state: 'present'
|
|
update_cache: true
|
|
cache_valid_time: 3600
|
|
tags:
|
|
- 'packages'
|
|
|
|
- block:
|
|
- name: 'create nextcloud DB'
|
|
postgresql_db:
|
|
name: 'nextcloud'
|
|
- name: 'create nextcloud DB user'
|
|
postgresql_user:
|
|
name: 'www-data'
|
|
db: 'nextcloud'
|
|
priv: 'ALL'
|
|
become: true
|
|
become_method: 'su'
|
|
become_user: 'postgres'
|
|
|
|
- name: 'download nextcloud'
|
|
get_url:
|
|
url: 'https://download.nextcloud.com/server/releases/nextcloud-{{ nextcloud_version }}.tar.bz2'
|
|
dest: '/opt/nextcloud.tar.bz2'
|
|
register: 'new_download'
|
|
tags:
|
|
- 'packages'
|
|
|
|
- name: 'unpack nextcloud'
|
|
unarchive:
|
|
src: '/opt/nextcloud.tar.bz2'
|
|
dest: '/opt'
|
|
owner: 'www-data'
|
|
group: 'www-data'
|
|
copy: no
|
|
when: new_download.changed
|
|
tags:
|
|
- 'packages'
|
|
|
|
- name: 'create nextcloud data folder'
|
|
file:
|
|
path: '/opt/nextcloud_data'
|
|
owner: 'www-data'
|
|
group: 'www-data'
|
|
state: 'directory'
|
|
|
|
- name: 'create nginx configuration'
|
|
template:
|
|
src: 'nextcloud.conf.j2'
|
|
dest: '/etc/nginx/locations/{{ server_fqdn }}/nextcloud.conf'
|
|
notify: 'restart nginx'
|
|
|
|
- import_tasks: 'occ.yaml'
|
|
vars:
|
|
occ_args: '--no-warnings status --output json'
|
|
ignore_changes: true
|
|
- set_fact:
|
|
installed: '{{ occ_out.installed }}'
|
|
|
|
- block:
|
|
- name: 'create random root password'
|
|
gen_passwd: length=20
|
|
register: 'password'
|
|
- set_fact:
|
|
initial_root_password: '{{ password.passwd }}'
|
|
- name: 'store root password plaintext'
|
|
copy:
|
|
content: '{{ initial_root_password }}'
|
|
dest: '/etc/nextcloud.secret'
|
|
- fail:
|
|
msg: >-
|
|
Warning! First Install and `initial_root_password` not provided.
|
|
Random password generated and stored in /etc/nextcloud.secret.
|
|
**WIPE AS SOON AS POSSIBLE**
|
|
failed_when: false
|
|
when: (initial_root_password is not defined) and (not installed)
|
|
|
|
- name: 'install nextcloud'
|
|
include_tasks: 'occ.yaml'
|
|
vars:
|
|
occ_args: >-
|
|
maintenance:install
|
|
--database 'pgsql'
|
|
--database-name 'nextcloud'
|
|
--database-host '/var/run/postgresql'
|
|
--database-user 'www-data'
|
|
--database-pass ''
|
|
--admin-pass '{{ initial_root_password }}'
|
|
--data-dir '/opt/nextcloud_data'
|
|
--no-interaction
|
|
nojson: true
|
|
when: not installed
|
|
|
|
- name: 'set trusted_domains'
|
|
occ:
|
|
command: 'config:system:set'
|
|
key: 'trusted_domains {{ idx }}'
|
|
value: '{{ item }}'
|
|
loop:
|
|
- 'localhost'
|
|
- '{{ server_fqdn }}'
|
|
loop_control:
|
|
index_var: idx
|
|
|
|
- name: 'update tls ca'
|
|
copy:
|
|
content: '{{ tls_root_ca }}'
|
|
dest: '/etc/ldap/root_ca.crt'
|
|
tags:
|
|
- 'tls_int'
|
|
|
|
- name: 'configure ldap client'
|
|
copy:
|
|
src: 'ldap.conf'
|
|
dest: '/etc/ldap/ldap.conf'
|
|
when: ldap_tls_enabled
|
|
|
|
- name: 'enable user_ldap'
|
|
occ:
|
|
command: 'config:app:set'
|
|
key: 'user_ldap enabled'
|
|
value: 'yes'
|
|
tags:
|
|
- 'service_password'
|
|
|
|
- name: 'configure user_ldap'
|
|
occ:
|
|
command: 'config:app:set'
|
|
key: 'user_ldap s01{{ item.key }}'
|
|
value: '{{ item.value }}'
|
|
loop: '{{ ldap_settings|dict2items }}'
|
|
vars:
|
|
ldap_settings:
|
|
has_memberof_filter_support: '1'
|
|
ldap_host: '{{ ldap_server }}'
|
|
ldap_port: '389'
|
|
ldap_dn: 'cn={{ ansible_hostname }},ou=Server,{{ ldap_basedn }}'
|
|
ldap_base: 'ou=People,{{ ldap_basedn }}'
|
|
ldap_base_users: 'ou=People,{{ ldap_basedn }}'
|
|
ldap_base_groups: 'ou=Groups,{{ ldap_basedn }}'
|
|
ldap_login_filter: '(&(cn=%uid)(authorizedService=nextcloud))'
|
|
ldap_user_filter: '(authorizedService=nextcloud)'
|
|
ldap_attributes_for_user_search: 'cn'
|
|
ldap_attributes_for_group_search: 'cn'
|
|
ldap_email_attr: 'mail'
|
|
ldap_tls: '{{ 1 if ldap_tls_enabled else 0 }}'
|
|
ldap_experienced_admin: '1'
|
|
ldap_configuration_active: '1'
|
|
|
|
- name: 'generate nextcloud ldap password'
|
|
gen_passwd: 'length=32'
|
|
register: 'new_passwd'
|
|
no_log: true
|
|
tags:
|
|
- 'service_password'
|
|
|
|
- name: 'set nextcloud ldap password in ldap'
|
|
delegate_to: 'localhost'
|
|
ldap_passwd:
|
|
dn: 'cn={{ ansible_hostname }},ou=Server,{{ ldap_basedn }}'
|
|
passwd: '{{ new_passwd.passwd }}'
|
|
server_uri: 'ldap://{{ ldap_server }}'
|
|
start_tls: '{{ ldap_tls_enabled }}'
|
|
bind_dn: '{{ ldap_admin_dn }}'
|
|
bind_pw: '{{ ldap_admin_pw }}'
|
|
no_log: true
|
|
tags:
|
|
- 'service_password'
|
|
|
|
- import_tasks: 'occ.yaml'
|
|
vars:
|
|
occ_args: 'ldap:set-config s01 ldapAgentPassword {{ new_passwd.passwd }}'
|
|
nojson: true
|
|
tags:
|
|
- 'service_password'
|
|
...
|