前言
前段时间遇到个jenkins登录问题,正好填一下以前写openldap或jenkins留下的坑,介绍一下openldap集成到Jenkins的操作
Jenkins ver. 2.176.2
openldap 2.4.44
Centos 7.2
Openldap相关配置
下方链接为Openldap搭建操作
Openldap重置密码
由于使用个人环境忘记管理员密码,现在演示重置ldap密码操作
<1>生成新密码
slappasswd -s 你要设置的密码
将生成的密码保存,之后会用到
slappasswd -s 1ntoeos
<2>修改olcDatabase={2}hdb.ldif文件
(注意:红框位置)
vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
在此文件的最后一行添加olcRootPW+第一步生成的密码,“:” 和密码之间有空格
由于是重置密码,替换密码为新密码即可
<3>验证配置
slaptest -u
由于收到修改了2个文件,checksum忽略即可,testing succeeded即为成功
<4>重新启动OpenLDAP
systemctl enable slapd;systemctl restart slapd
<5>使用新密码登录
Openldap创建用户和组
<1>在group这个ou下面创建一个jenkins的ou
<2>在jenkins这个ou里面创建3个组
(几个组都可,名称需要明了。目的是为了之后在Jenkins上配置不同权限)
jenkins-admins
jenkins-editors
jenkins-users
填写组名,如果有用户可以批量勾选用户
<3>在ou=people下面创建几个账户,配置好邮箱和密码
(如果ldap对接了oa或邮箱,已有用户,可跳过这一步)
如果你已经存在用户,只需要创建组,并为组添加用户即可。直接查看第6步骤。
GID号可以在创建用户的时候,选择用户的组
<5>给用户添加新属性
(如果ldap对接了oa或邮箱,已有用户,可跳过这一步)
添加邮箱
<6>一个用户设置多个组 或者 为组添加用户
选择一个组,添加新属性 memberuid
填一个用户
修改用户
可根据需求选择用户添加到右侧,并保存
Jenkins相关配置
Jenkins账号密码重置:
Jenkins LDAP配置
根据前面的链接,可以我们可以重置admin的密码
而下面演示的是由于ldap配置出现问题,导致ldap账户无法登录的处理方法
(如果仅需要jenkins配置ldap操作,仅查看4~6步内容即可)
<1>找到你的jenkins的主目录
由于不同的环境或安装方式,jenkins存放数据的主目录的位置也不相同。如果要修改配置文件,先要找到数据目录
Linux环境中,Jenkins主目录默认在/root/.jenkins ;
如果你设置了JENKINS_HOME环境变量,主目录即为环境变量所指位置
cat /etc/profile
export JENKINS_HOME=/data/jenkins_home
export PATH=$PATH:$JENKINS_HOME
<2>备份配置文件
cd /data/jekins_home
cp config.xml config.xml_old
<3>重启jenkins
重启jenkins后会生成新的config.xml配置文件
(这时会丢失以前的所有配置的权限和列表,视图)
<4>配置jenkins权限(无需登录)
<5>配置ldap
输入ldap的ip和端口(123.123.123.123仅为演示,ldap://123.123.123.123:389也可),有域名解析的填写域名即可
root DN: 使用一个adminDN账号用于查询用户
User search base: 用户从哪个范围查找
User search filter: 过滤用户的表达式(通常是以cn或uid筛选) cn={0} uid={0}
Group search base: 组从哪个范围查找
Group search filter: 过滤组的表达式 (& (cn={0})(objectclass=groupOfUniqueNames))
Manager DN: 管理者的DN
Manager Password: 管理者对应的密码
or 仅根据uid筛选用户
<6>配置策略
根据需求配置权限(使用的是第一个ldap配置)
<7>填入用户
可填入组或单个用户
下面这种配置权限也不可用,因为用户不存在
当以cn筛选时,cn名称即为 可填入权限配置的和jenkins可登录的用户名
当以uid筛选时,该cn的user name即为用户名
策略调整结果
将用户在ldap里面添加到jenkins-admins这个组,该用户将拥有jenkins-admins这个组的所有权限
也可以直接添加单个用户的权限。为了避免组权限配置异常导致无法登录,可配置添加一个用户为管理员权限
Jenkins视图及配置恢复
前面我们重新配置了ldap,并且可以使用ldap的账户进行登录了。但是由于是新生成的配置文件,所以 以前配置的视图看不到了,接着需要恢复视图及其他配置。
<1>去jenkins数据目录,调整config.xml
cd /data/jenkins_home/
cat config.xml_old >> config.xml
该截图及其前面的内容即为重新配置ldap后, xml文件新生成的内容
接着需要把旧的配置文件中 ldap配置下方的内容,复制到新的config.xml文件中 ldap配置的下面。
<2>重启jenkins,并再次登录即可
说明:
如果你的jenkins数据目录平时有备份,直接使用之前权限还正常时的备份的config.xml文件即可,无需前面麻烦的操作,由此可见备份的重要性。