- 博客/
部署 Devops 必备利器 OpenLdap
作者
Johny
熟练的 云原生搬砖师
Table of Contents
环境说明:#
- 操作系统: Centos
- Docker 版本: 19.03.8
- 使用容器:
osixia/phpldapadmin:latest
、osixia/openldap:latest
、grams/ltb-self-service-password:latest
使用 docker-compose 部署 ldap#
创建部署前所需的文件夹#
mkdir -p /data/openldap/{data,config}
Docker-compose 部署#
cat > docker-compose.yaml << EOF
version: "2"
services:
openldap:
container_name: "openldap"
image: "osixia/openldap:latest"
restart: always
environment:
LDAP_ORGANISATION: "openldap"
LDAP_DOMAIN: "treesir.pub"
LDAP_ADMIN_PASSWORD: "123456"
LDAP_CONFIG_PASSWORD: "123456"
volumes:
- /data/openldap/data:/var/lib/ldap
- /data/openldap/config:/etc/ldap/slapd.d
ports:
- '389:389'
phpldapadmin:
container_name: "phpldapadmin"
image: "osixia/phpldapadmin:latest"
restart: always
links:
- "openldap"
environment:
PHPLDAPADMIN_HTTPS: "false"
PHPLDAPADMIN_LDAP_HOSTS: "openldap"
ports:
- '30004:80'
EOF
docker-compose 启动#
docker-compose up -d
openLdap 目录结构的初始化#
下面演示的的目录结构的创建,不一定适用于你们的环境,更具实际使用情况调整即可。
创建 users
ou 组#
创建 groups
ou 组#
与
上面
创建 users ou 组一样的
此时我们得到两个 ou组了,在接着创建 user
& group
创建 user
用户对象#
选择创建
defuault
对象,这样的好处
是我们可以自定义字段,将无用的字段进行排除
只保留有效的字段。。
找到 inetOrgPerson
, 点击 Proceed
创建完成后选择提交,如果提交
没有任何响应
,将最上面的对象设置为cn
创建 group
组对象,并将 用户拉入这个组中#
和上面一样,创建 default
对象
找到 groupOfUniqueNames
点击创建
复制用户的信息,粘贴至 uniqueMember
中
其他字段留空,点击并提交。
如需添加其他用户至这个组
openLdap 优化#
自助
修改密码服务 搭建#
docker pull grams/ltb-self-service-password
mkdir -p /etc/ldap-repasswd \
&& cd /etc/ldap-repasswd
wget https://cdn.treesir.pub/application/openldap/config.inc.php
vim config.inc.php # 修改配置文件中 ldap 信息
$ldap_url = "ldap://192.168.8.1:389";
$ldap_starttls = false;
$ldap_binddn = "cn=admin,dc=treesir,dc=pub";
$ldap_bindpw = "123456";
$ldap_base = "dc=treesir,dc=pub";
$ldap_login_attribute = "uid";
$ldap_fullname_attribute = "cn";
$ldap_filter = "(&(objectClass=person)($ldap_login_attribute={login}))";
# 启动容器
docker run -p 8765:80 -d \
--restart always \
-v /etc/ldap-repasswd/config.inc.php:/usr/share/self-service-password/conf/config.inc.php \
--name ldap-repasswd \
grams/ltb-self-service-password
# 如开启了 防火墙 需要将 端口 开放出来
firewall-cmd --zone=public --add-port=8765/tcp --permanent && firewall-cmd --reload
config.inc.php
配置文件为最基础配置,比如你需要配置邮件通知
及密码的安全级别
等高级功能请参考详细文档
。
使用脚本定期备份 ldap 数据#
脚本如下所示:
#!/bin/bash
##########################################################
# Author : LeafyJohn
# Email : amoaloas@gmail.com
# Last modified : 2020-12-21 10:38:27
# Description : openLdap backupup
# License: Attribution-NonCommercial 4.0 International
###########################################################
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export PATH
BACKPATH=/data/rsyncd-backup/openldap
KEEPVERSION=30
function BACK() {
ldapsearch -x -D "cn=admin,dc=treesir,dc=pub" -w '123456' -b 'dc=treesir,dc=pub' -LLL -H ldap://192.168.8.1 > "${BACKPATH}"/`date +"%Y%m%d"`.ldif
}
function CLEAR() {
NUB=`ls "$BACKPATH"|wc -l`
if [ "$NUB" -gt "$KEEPVERSION" ]
then
KEEP=`echo "$NUB - $KEEPVERSION"|bc`
for DEL in `ls "$BACKPATH"|sort -nr 2>&1|tail -n "$KEEP"`
do
rm -rf "$BACKPATH"/"$DEL"
done
fi
}
function main() {
BACK
CLEAR
}
main
配合 cron 进行定期执行
0 0 * * 1-5 bash /data/scripts/openldap-backup.sh >/dev/null 2>&1
数据恢复还原
数据恢复
此处省略,请此篇 文档
配置服务关联列表#
Jenkins#
jenkins 配置关联,在此篇 文档 中已有配置说明。
Gitlab#
编辑 Gitlab 对应配置文件
gitlab.rb
,在最后面添加如下配置列即可
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 'treesir.pub'
port: 389 # usually 636 for SSL
uid: 'uid' # This should be the attribute, not the value that maps to uid.
# Examples: 'america\\momo' or 'CN=Gitlab Git,CN=Users,DC=mydomain,DC=com'
bind_dn: 'cn=admin,dc=treesir,dc=pub'
password: '123456'
encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
active_directory: false
allow_username_or_email_login: false
base: 'ou=users,dc=treesir,dc=pub'
user_filter: ''
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
EOS
修改完成后,需要重载
Gitlab 使其配置文件生效, 不执行将导致不会生效
。
gitlab-ctl reconfigure
gitlab-ctl restart # 重载配置 后 重启服务器生效
Rancher#
Nexus#
创建ldap 认证
按照上面的配置连接后,记得进行 输入账号测试一下
相关文章
Kind 部署本地k8s集群的使用记录
·326 字·1 分钟·
k8s
docker
devops
centos7
kind
Docker Quickstart Redis Server
·174 字·1 分钟·
docker
redis
centos7
Docker 部署多网口 openWrt 软路由
·810 字·2 分钟·
openwrt
linux
centos7
kubernetes 集群中 控制平面 组件频繁发生重启的问题排查记录
·688 字·2 分钟·
k8s
coredns
flannel
fix
Docker 部署的 openWrt 软路由, 并解决无法与宿主机通信问题
·923 字·2 分钟·
fix
openwrt
n1
docker-compose
docker
openwrt