#!/bin/bash
set -e
ldapurl=ldaps://XXXXX:636
ldapuser=CN=openshift,OU=Linux,OU=Sysaccounts,OU=Accounts,DC=office,DC=XXXX,DC=ru
ldappass=XXXXXX
groupbasedn=OU=DepartmentGroups,OU=Groups,DC=office,DC=XXX,DC=ru
groupbasedn1=OU=Openshift,OU=RoleGroups,OU=Groups,DC=office,DC=XXX,DC=ru
groupbasedn2=OU=Workshops,OU=RoleGroups,OU=Groups,DC=office,DC=XXX,DC=ru
ldapsearch -o ldif-wrap=no -D ${ldapuser} -H ${ldapurl} -w ${ldappass} -s sub \
-b ${groupbasedn} -A '(objectClass=group)' dn \
| egrep '^dn:' \
| awk '{print $2}' \
> /root/active_directory_sync_whitelist.txt
ldapsearch -o ldif-wrap=no -D ${ldapuser} -H ${ldapurl} -w ${ldappass} -s sub \
-b ${groupbasedn1} -A '(objectClass=group)' dn \
| egrep '^dn:' \
| awk '{print $2}' \
>> /root/active_directory_sync_whitelist.txt
ldapsearch -o ldif-wrap=no -D ${ldapuser} -H ${ldapurl} -w ${ldappass} -s sub \
-b ${groupbasedn2} -A '(objectClass=group)' dn \
| egrep '^dn:' \
| awk '{print $2}' \
>> /root/active_directory_sync_whitelist.txt
cat > /root/active_directory_sync_ldapsync.yaml <<EOF
kind: LDAPSyncConfig
apiVersion: v1
url: ${ldapurl}
bindDN: ${ldapuser}
bindPassword: ${ldappass}
augmentedActiveDirectory:
groupsQuery:
derefAliases: never
pageSize: 0
groupUIDAttribute: dn
groupNameAttributes: [ cn ]
usersQuery:
baseDN: OU=Accounts,DC=office,DC=XXXX,DC=ru
scope: sub
derefAliases: never
pageSize: 0
filter: (objectClass=user)
userNameAttributes: [ sAMAccountName ]
groupMembershipAttributes: [ "memberOf:1.2.840.113556.1.4.1941:" ]
EOF
oc adm groups sync --sync-config=/root/active_directory_sync_ldapsync.yaml --confirm --whitelist=/root/active_directory_sync_whitelist.txt
rm /root/active_directory_sync_whitelist.txt /root/active_directory_sync_ldapsync.yaml