背景:
由于公司业务原因,gitlab服务器需要迁移至其他服务器,但是GITLAB服务器的密码被上上一届的人弄丢了,导致无法连接进GITLAB服务器去进行备份迁移,没办法只能走另外一种办法进行迁移,多次实验保证能过!!!!!
条件:
1.linux主机,centos系统,安装docker环境
2.确保服务器内存能够存储gitlab的代码,迁移会先将代码拉取下来
步骤:
1.直接使用自带的yum源安装docker
1.直接yum装docker:
yum install docker2.启动docker服务:
systemctl start docker.service3.设置开机自启(这一步可做可不做):
systemctl enable docker.service4.查看docker版本,结果会显示服务端和客户端的版本
docker version
2. 拉取最新迁移工具的镜像
docker pull registry.gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate:rolling-centos
3. 获取镜像id
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate rolling-centos 256330caf79e 2 days ago 2.26 GB
4.运行容器
docker run \
-v /run/docker.sock:/run/docker.sock \ # 可以提前修改docker.sock的权限,修改为666
-v /etc/hosts:/etc/hosts \ # 引用DNS相关信息
-p 8000:8000 \ # 映射相关端口
-it 256330caf79e \ # 这个为image id
/bin/bash
5. 修改data/congregate.conf文件内的内容
[DESTINATION]
dstn_hostname = http://192.168.1.XXX # 目标gitlab地址
dstn_access_token = c3pieURBcnqiwbkuqkxBMVYtVjY= # 目标gitlab的tonken
import_user_id = 2
shared_runners_enabled = True
project_suffix = False
max_import_retries = 3
username_suffix = gd
max_asset_expiration_time = 24[SOURCE]
src_type = GitLab
src_hostname = http://192.168.1.XXX #源gitlab地址
src_access_token = VndSdDdwugooynBLa21YWXF5U1M= #源gitlab的tonken
src_tier = core
export_import_timeout = 300[EXPORT]
location = filesystem
filesystem_path = /opt/congregate[USER]
keep_inactive_users = False
reset_pwd = True
force_rand_pwd = True[APP]
export_import_status_check_time = 10
mongo_host = localhost
mongo_port = 27017
ui_port = 8000
processes = 4
ssl_verify=True
注意!!!!! gitlab上的tonken不能直接写入到配置文件中,需要进行聚合混析,具体命令如下
./congregate.sh obfuscate
具体实现方法是执行该命令后,将gitlab的tonken输入,会输入一个新的tonken,将新的tonken输入即可
6. 获取源仓库的数据
[ps-user@e3edb57b7c87 congregate]$ ./congregate.sh list
7. 通过UI的方式去确定你想要迁移的对象
[ps-user@e3edb57b7c87 congregate]$ ./congregate.sh ui &
ip+端口访问会显示以上界面,如果需要全部备份可以全选点击stage按钮,会在容器中的data/目录下生成三个文件,分别是staged_groups.json,staged_projects.json,staged_users.json
8.最后执行迁移
首先先迁移用户
./congregate.sh migrate --skip-group-export --skip-group-import --skip-project-export --skip-project-import --commit
其次是组
./congregate.sh migrate --skip-users --skip-project-export --skip-project-import --commit
最后是项目
./congregate.sh migrate --skip-users --skip-group-export --skip-group-import --commit
具体详情可参考文章
最后耐心等待一段时间 即可迁移成功,
还有一点需要注意的是: 提供给配置文件的那两个tonken,必须是管理员admin进行创建的,如果权限不是admin是可能会报错的