Gitlab作为现在主流的代码统一管理平台,随着公司项目的增多以及开发人员的增加,有必要通过集成LDAP服务器,统一账号管理使用。
编辑gitlab.rb配置文件,主要开启和配置如下信息:
external_url 'http://1.1.1.1'
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
label: 'LDAP'
host: 'x.x.x.x'
port: 389
uid: 'sAMAccountName'
bind_dn: 'CN=ldap_user,OU=IT,OU=IT Function Users,OU=People,DC=sample,DC=com'
password: 'test123'
verify_certificates: true
smartcard_auth: false
active_directory: true
allow_username_or_email_login: true
lowercase_usernames: true
block_auto_created_users: false
base: 'OU=People,DC=sample,DC=com'
user_filter: 'memberOf=CN=gitlabuser,OU=IT,OU=IT Function Users,OU=People,DC=sample,DC=com'
group_base: ''
admin_group: ''
sync_ssh_keys: false
EOS
unicorn['port'] = 8080
以上配置信息请按实际LDAP配置填写,主要配置段:
1)host: 'x.x.x.x ' #指定LDAP服务器的IP地址(如果是指向多个,在配置文件中配置多个。企业版支持)
2)bind_dn: 'CN=ldap_user,OU=IT,OU=IT Function Users,OU=People,DC=sample,DC=com' #指定ldap服务器的管理员信息即cn=账户,cn=组织单位
3)password: 'test123' #指定ldap服务器的管理员密码
4)base: 'OU=Employees,OU=People,DC=sample,DC=com' #指定ldap服务器的base域
5)user_filter: 'memberOf=CN=GitlabGroup,OU=Groups,OU=Employees,OU=People,DC=sample,DC=com' #用户登录权限控制,格式为LDAP查询条件,示例按用户组进行控制
6)**gitlab_rails[‘ldap_enabled’] = true **开启集成ldap功能
配置完成后保存,使用以下命令加载gitlab服务已经重启服务
gitlab-ctl reconfigure
gitlab-ctl restart
完成后可以使用以下命令验证集成的LDAP账号
gitlab-rake gitlab:ldap:check
gitlab-rake gitlab:ldap:check|grep "zhang.san"
登录选择LDAP选项卡,然后输入集成的用户和密码即可登录;另外Standard本地用户仍旧可以使用。这里一般使用本地管理员作为全局管理,LDAP账号作为各自项目的管理和开发等角色使用。
首先准备SSL证书,可以使用通配符证书或者免费的SSL证书
修改gitlab.rb文件,配置以下:
external_url 'https://sample.study.com.cn' #启用https,这里指定域名为sample
(指定非443默认端口:external_url 'https://sample.study.com.cn:8881' )
nginx['enable'] = true #启用gitlab nginx
nginx['redirect_http_to_https'] = true #启用http重定向到https
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt" #SSL证书路径
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key" #SSL秘钥路径
mkdir /etc/gitlab/ssl #创建SSL证书目录以及拷贝证书和设置权限
cp /root/server.key /etc/gitlab/ssl; cp /root/server.crt /etc/gitlab/ssl
chmod 700 /etc/gitlab/ssl/ -R
更新配置并查看状态
gitlab-ctl reconfigure # 更新配置
gitlab-ctl status #查看状态
如果系统带防火墙,需要放行策略,如Centos服务器firewalld放行规则
firewall-cmd --permanent --add-service=https
gitlab-ctl start #启动所有 gitlab 组件;
gitlab-ctl stop #停止所有 gitlab 组件;
gitlab-ctl restart #重启所有 gitlab 组件;
gitlab-ctl status #查看服务状态;
gitlab-ctl reconfigure #启动服务;
vim /etc/gitlab/gitlab.rb #修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
gitlab-ctl tail #查看日志;
自动切换LDAP服务器脚本(社区版gitlab仅支持集成一个LDAP服务器)
#!/bin/bash
#Switch gitalb integrate with DC
################################
DC1="10.1.1.1"
DC2="10.1.1.2"
string=`grep -v "#" /etc/gitlab/gitlab.rb | grep $DC1|wc -l`
if [ $string -ne 1 ];then
rp_string="s/$DC2/$DC1/g"
fi
mark=`date +%Y%m%d`
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.$mark || { exit -1; }
sed -i "$rp_string" /etc/gitlab/gitlab.rb || { exit -1; }
/usr/bin/gitlab-ctl reconfigure > /dev/null && echo "gitlab reconfig success." || { exit -1; }
sleep 2
/usr/bin/gitlab-ctl restart