feat: add ldap provisioning to nextcloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
This commit is contained in:
parent
700cafed0e
commit
59d0174905
3 changed files with 67 additions and 1 deletions
|
|
@ -76,4 +76,25 @@ nextcloud_oidc_providers: []
|
||||||
|
|
||||||
# OIDC providers to remove
|
# OIDC providers to remove
|
||||||
nextcloud_oidc_providers_removed: []
|
nextcloud_oidc_providers_removed: []
|
||||||
# - old-provider
|
# - old-provider
|
||||||
|
|
||||||
|
# LDAP configuration
|
||||||
|
nextcloud_ldap_enabled: false
|
||||||
|
nextcloud_ldap_config: {}
|
||||||
|
# Example for 389ds with Keycloak user federation:
|
||||||
|
# ldapHost: "ldaps://389ds"
|
||||||
|
# ldapPort: "3636"
|
||||||
|
# ldapAgentName: "cn=Directory Manager"
|
||||||
|
# ldapAgentPassword: "changeme"
|
||||||
|
# ldapBase: "dc=example,dc=com"
|
||||||
|
# ldapBaseUsers: "ou=users,dc=example,dc=com"
|
||||||
|
# ldapBaseGroups: "dc=example,dc=com"
|
||||||
|
# ldapTLS: "0"
|
||||||
|
# turnOffCertCheck: "0"
|
||||||
|
# ldapUserFilter: "(&(objectclass=inetOrgPerson)(uid=*))"
|
||||||
|
# ldapLoginFilter: "(&(objectclass=inetOrgPerson)(uid=%uid))"
|
||||||
|
# ldapUserDisplayName: "displayname"
|
||||||
|
# ldapEmailAttribute: "mail"
|
||||||
|
# ldapExpertUsernameAttr: "uid"
|
||||||
|
# ldapExpertUUIDUserAttr: "nsuniqueid"
|
||||||
|
# ldapConfigurationActive: "1"
|
||||||
41
roles/nextcloud/tasks/ldap.yml
Normal file
41
roles/nextcloud/tasks/ldap.yml
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
#SPDX-License-Identifier: MIT-0
|
||||||
|
---
|
||||||
|
# LDAP configuration for Nextcloud user_ldap app
|
||||||
|
|
||||||
|
- name: Check if LDAP configuration exists
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ nextcloud_service_name }}-nextcloud-1"
|
||||||
|
command: php /var/www/html/occ ldap:show-config
|
||||||
|
register: ldap_show_config
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Create LDAP configuration
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ nextcloud_service_name }}-nextcloud-1"
|
||||||
|
command: php /var/www/html/occ ldap:create-empty-config
|
||||||
|
when: "'s01' not in ldap_show_config.stdout"
|
||||||
|
|
||||||
|
- name: Configure LDAP settings
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ nextcloud_service_name }}-nextcloud-1"
|
||||||
|
argv:
|
||||||
|
- php
|
||||||
|
- /var/www/html/occ
|
||||||
|
- ldap:set-config
|
||||||
|
- s01
|
||||||
|
- "{{ item.key }}"
|
||||||
|
- "{{ item.value | string }}"
|
||||||
|
loop: "{{ nextcloud_ldap_config | dict2items }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.key }}"
|
||||||
|
no_log: true
|
||||||
|
|
||||||
|
- name: Test LDAP configuration
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ nextcloud_service_name }}-nextcloud-1"
|
||||||
|
command: php /var/www/html/occ ldap:test-config s01
|
||||||
|
register: ldap_test_result
|
||||||
|
changed_when: false
|
||||||
|
failed_when:
|
||||||
|
- ldap_test_result.rc != 0
|
||||||
|
- "'succeeded' not in (ldap_test_result.stdout | default('') | lower)"
|
||||||
|
|
@ -70,6 +70,10 @@
|
||||||
ansible.builtin.include_tasks: collabora.yml
|
ansible.builtin.include_tasks: collabora.yml
|
||||||
when: nextcloud_enable_collabora
|
when: nextcloud_enable_collabora
|
||||||
|
|
||||||
|
- name: Configure LDAP backend
|
||||||
|
ansible.builtin.include_tasks: ldap.yml
|
||||||
|
when: nextcloud_ldap_enabled
|
||||||
|
|
||||||
- name: Configure OIDC providers
|
- name: Configure OIDC providers
|
||||||
ansible.builtin.include_tasks: oidc.yml
|
ansible.builtin.include_tasks: oidc.yml
|
||||||
when: nextcloud_oidc_providers | length > 0 or nextcloud_oidc_providers_removed | length > 0
|
when: nextcloud_oidc_providers | length > 0 or nextcloud_oidc_providers_removed | length > 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue