基于Centos的Gitlab+AD集成

Linux wangleiadmin 138℃ 0评论

Gitlab介绍

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写,现今并在国内外大中型互联网公司广泛使用。

Git、Gitlab、GitHub的简单区别

  • git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面。
  • gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发。
  • github 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择github作为代码托管仓库

官网参考

部署Gitlab EE+AD集成

1.安装服务及打开http和ssh通过系统防火墙的权限

yum install -y curl policycoreutils-python openssh-server
systemctl enable sshd
systemctl start sshd
firewall-cmd --permanent --add-service=http
systemctl reload firewalld

2.安装Postfix邮件系统

yum install postfix
systemctl enable postfix
systemctl start postfix

3.添加Gitlab资源库及安装。

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

4.安装GItlab包,这里的”http://gitlab.example.com”可以改成自己的URL,如果是本地的可以直接用http://127…这样的格式

sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
#安装gitlab-ee  可通过yum --showduplicates list gitlab-ee 查看版本如:yum install gitlab-ee-14.2.3-ee.0.el7
#此步骤结束后Gitlab EE搭建完成

5.Gitlab配置AD认证

vim /etc/gitlab/gitlab.rb    #编辑gitlab配置文件
gitlab_rails['ldap_enabled'] = true
#gitlab_rails['prevent_ldap_sign_in'] = true
###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'LDAP'
     host: '10.0.30.X'
     port: 389
     uid: 'sAMAccountName'
     bind_dn: 'CN=用户,CN=Users,DC=nuanfeng,DC=com'
     password: '密码'
     encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
     verify_certificates: true
     smartcard_auth: false
     active_directory: true
     allow_username_or_email_login: false
     lowercase_usernames: false
     block_auto_created_users: false
     base: 'OU=暖风,DC=nuanfeng,DC=com'
     user_filter: ''
     ## EE only
     group_base: ''
     admin_group: ''
     sync_ssh_keys: false
EOS

6.配置生效及重启Gitlab

gitlab-ctl reconfigure       #配置生效
gitlab-ctl restart           #重启gitlab

7.配置GitLab站点Url 

vim /etc/gitlab/gitlab.rb   #编辑gitlab配置文件
默认的站点Url配置项是:
external_url 'http://git.andblog.cn'
可以用IP代替域名,这里根据自己需求设置。

8.配置GitLab邮件

vim /etc/gitlab/gitlab.rb
 
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.exmail.qq.com'
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = 'yourmail@xwlei.com'
gitlab_rails['smtp_password'] = 'yourpasswd'
gitlab_rails['smtp_domain'] = 'smtp.exmail.qq.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'yourmail@xwlei.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

9.配置Gitlab 禁用创建组权限


GitLab默认所有的注册用户都可创建组,对于团队来说只会给Leader相关权限。可以通过配置Gitlab默认禁用创建组权限,#开启gitlab_rails['gitlab_default_can_create_group'] 选项,并将值设置为false
### GitLab user privileges
gitlab_rails['gitlab_default_can_create_group'] = false

10.刷新配置并启动Gitlab

gitlab-ctl reconfigure

11.Gitlab 常用命令介绍

check-config    检查在gitlab中是否有任何配置。在指定版本中删除的rb
deploy-page 安装部署页面
diff-config 将用户配置与包可用配置进行比较
remove-accounts 删除所有用户和组
upgrade 升级
service-list    查看所有服务
once    如果GitLab服务停止了就启动服务,如果已启动就不做任何操作
restart 重启GitLab服务
start   如果GitLab服务停止了就启动服务,如果已启动就重启服务
stop    停止GitLab服务
status  查看GitLab服务状态
gitlab-ctl  reconfigure重新配置GitLab并启动

12.设置备份过期时间

设置只保存最近7天的备份,编辑 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],设置为你想要设置的值。
gitlab_rails['backup_keep_time'] = 604800

13.Gitlab自动备份 定时备份任务

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
 
#或定时执行一个脚本内容为:
/opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
chmod +x auto_backup.sh          #给予脚本执行权限
#/etc/crontab 中添加执行脚本的定时任务
0 2 * * *  /data/gitlabData/backups/auto_backup.sh -D 1

备份恢复Gitlab


恢复条件
1.在恢复Gitlab之前,需安装一个新的Gitlab环境(步骤可按照部署教程操作),需要注意的是新环境与之前版本要一致,如当前安装版本与恢复版本不同,则必须在恢复备份之前进行降级。
2.Gitlab默认备份方式不对gitlab-secrets.json和gitlab.rb进行备份,在恢复前需要对此文件进行手动备份。

备份恢复

cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
#GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:restore

gitlab-secrets.json丢失怎么办?


gitlab-secrets.json文件负责为包含必需的敏感信息的列存储加密密钥。 如果密钥丢失,则GitLab无法解密这些列,从而无法访问以下项目:
CI/CD variables
Kubernetes / GCP integration
Custom Pages domains
Project error tracking
Runner authentication
Project mirroring
Web hooks

解决方法

gitlab-rails dbconsole
gitlab-psql -d gitlabhq_production
SELECT * FROM public."ci_group_variables";
SELECT * FROM public."ci_variables";
DELETE FROM ci_group_variables;
DELETE FROM ci_variables;
UPDATE projects SET runners_token = null, runners_token_encrypted = null;
UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
UPDATE application_settings SET runners_registration_token_encrypted = null;
UPDATE application_settings SET encrypted_ci_jwt_signing_key = null;
UPDATE ci_runners SET token = null, token_encrypted = null;
UPDATE ci_builds SET token = null, token_encrypted = null;
TRUNCATE web_hooks CASCADE;

转载请注明:暖风 » 基于Centos的Gitlab+AD集成

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址