Gitlab配置LDAP集成以及配置https访问

Gitlab作为现在主流的代码统一管理平台,随着公司项目的增多以及开发人员的增加,有必要通过集成LDAP服务器,统一账号管理使用。

一)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账号作为各自项目的管理和开发等角色使用。

Gitlab配置LDAP集成以及配置https访问_第1张图片

二)Gitlab配置https访问

首先准备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常用命令与AD切换脚本

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
 

你可能感兴趣的:(gitlab,git,github)