ldap数据迁移
更新时间: 2023-06-08 15:16:30
阅读 91
数据导出
登录旧ldap server节点,DUMP出base dn下的所有entry
# 导出配置时,可以使用root或者easyops账号,具体可以参考LDAP操作文档
[root@gnode1 mnt]# ldapsearch -LLL -Y External -H ldapi://%2Fvar%2Frun%2Fopenldap%2Fldapi -b dc=bdms,dc=163,dc=com | tee user.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: dc=bdms,dc=163,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: bdms.163.com
dc: bdms
dn: cn=admin,dc=bdms,dc=163,dc=com
objectClass: organizationalRole
cn: admin
dn: ou=groups,dc=bdms,dc=163,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups
dn: cn=bdms_default_group,ou=groups,dc=bdms,dc=163,dc=com
cn: bdms_default_group
gidNumber: 6000
objectClass: posixGroup
objectClass: top
dn: ou=people,dc=bdms,dc=163,dc=com
objectClass: organizationalUnit
objectClass: top
ou: people
dn: cn=anonymous,ou=people,dc=bdms,dc=163,dc=com
cn: anonymous
gidNumber: 6000
homeDirectory: /home/anonymous
loginShell: /bin/bash
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
sn: anonymous
uid: anonymous
uidNumber: 10000
...
数据导入
- 登录新ldap server节点,DUMP出base dn下的所有entry
- 新老节点导出的数据异同大致如下:
- 相同的内容就是大概就是 cn=anonymous 记录以上的部分(包括这一条,44行以上)
- 不同的内容就是这条记录以下部分,一般来说,新LDAP上没有额外的账号记录。若有的话,则需要单独做Merge,且去除uidNumber的重复项(建议咨询开发人员)
- 修改合并ldif数据文件
- 若两个不同的账号uidNumber一样,则以新集群的uidNumber为准,将旧集群中的entry修改uidNumber后,重新加入进来
- base dn若不一致,也需要全部替换掉,譬如老LDAP是dc=bdms,dc=163,dc=com, 新LDAP是dc=bdms,dc=com
- 删除头部SASL几行内容
- 最终修改的版本是uidNumber连续,且dn无重复项
dn: cn=bdms_huaxia,ou=people,dc=bdms,dc=com
uid: bdms_huaxia
uidNumber: 10001
homeDirectory: /home/users/bdms_huaxia
gidNumber: 6000
cn: bdms_huaxia
sn: bdms_huaxia
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
loginShell: /bin/sh
...
dn: cn=bdms_admin.mammut,ou=people,dc=bdms,dc=com
uid: bdms_admin.mammut
uidNumber: 10019
homeDirectory: /home/users/bdms_admin.mammut
gidNumber: 6000
cn: bdms_admin.mammut
sn: bdms_admin.mammut
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
loginShell: /bin/sh
- 使用 ldapadd 执行导入流程
# 使用账号认证方式来导入所有账号
ldapadd -H ldap://nnode1.local:1389 -D cn=admin,dc=bdms,dc=com -W -f user.ldif
- 验证账号是否完成导入
[easyops@nnode1 ~]$ id bdms_admin.mammut
uid=10019(bdms_admin.mammut) gid=6000(bdms_default_group) groups=6001(mammut_qa),6002(role_mammut_qa_1),6005(mammut_service),6006(role_mammut_service_1),6009(role_mammut_qa_50),6010(mammut_test),6011(role_mammut_test_1),6014(fanyouping_test),6016(role_fanyouping_test_2),6022(role_mammut_qa_56),6000(bdms_default_group)
文档反馈
以上内容对您是否有帮助?