GitLab在CentOS上的自动化运维实现指南
GitLab在CentOS上的自动化运维主要围绕自动化部署、CI/CD流水线、Runner配置及监控维护四大核心环节展开,通过工具链整合降低手动操作成本,提升系统可靠性和开发效率。
自动化部署GitLab需通过配置管理工具(如Ansible)或脚本化安装实现,以下以Ansible为例说明关键步骤:
ansible(sudo yum install epel-release -y && sudo yum install ansible -y);sudo权限且网络可达。编写gitlab.yml Playbook,定义GitLab安装、配置及启动任务:
---
- name: Install and configure GitLab on CentOS
hosts: gitlab_servers
become: yes
vars:
gitlab_version: "16.0.0-ce" # 根据需求调整版本
gitlab_repo: "https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-{{ gitlab_version }}.ce.el7.x86_64.rpm"
gitlab_key: "https://packages.gitlab.com/gpg.key"
external_url: "http://your-gitlab-server-ip" # 替换为实际IP或域名
tasks:
- name: 添加GitLab YUM仓库
yum_repository:
name: gitlab-ce
description: GitLab Community Edition
baseurl: "{{ gitlab_repo }}"
gpgcheck: yes
gpgkey: "{{ gitlab_key }}"
enabled: yes
update_cache: yes
- name: 安装GitLab社区版
yum:
name: "gitlab-ce-{{ gitlab_version }}.ce.el7.x86_64"
state: present
disable_gpg_check: no # 若使用官方仓库,可设为yes
- name: 启动GitLab服务并设置开机自启
service:
name: gitlab-runsvdir
state: started
enabled: yes
- name: 配置GitLab外部访问URL
lineinfile:
path: /etc/gitlab/gitlab.rb
regexp: "^external_url"
line: "external_url '{{ external_url }}'"
backup: yes
- name: 重新配置GitLab(应用设置)
shell: gitlab-ctl reconfigure
args:
creates: /etc/gitlab/reconfigured # 仅在未配置时执行
通过ansible-playbook命令部署,需提前创建inventory_file(目标服务器列表):
ansible-playbook -i inventory_file gitlab.yml
验证安装:curl http://your-gitlab-server-ip,若返回GitLab登录页面则说明成功。
GitLab Runner是执行CI/CD任务的必备组件,需完成安装-注册-配置三步:
通过脚本快速安装(CentOS 7/8通用):
curl -L --output /etc/apt/trusted.gpg.d/gitlab.asc https://packages.gitlab.com/gitlab/gitlab-runner/gpgkey && \
echo "deb https://packages.gitlab.com/gitlab/gitlab-runner/el/$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-runner.list && \
sudo yum install -y gitlab-runner
通过命令行注册Runner,关联GitLab项目:
sudo gitlab-runner register
按提示输入以下信息:
http://your-gitlab-server-ip);shell,简单场景可直接使用;复杂场景可选docker/kubernetes);centos-runner)和标签(如ci,deploy)。sudo gitlab-runner start
sudo systemctl enable gitlab-runner # 设置开机自启
sudo gitlab-runner status
若显示Runner is running则表示成功。
.gitlab-ci.yml是CI/CD的核心配置文件,定义**阶段(Stages)、任务(Jobs)、产物(Artifacts)**等逻辑。以下是一个基础示例:
stages:
- build # 构建阶段
- test # 测试阶段
- deploy # 部署阶段
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN"
build_job:
stage: build
script:
- echo "开始构建项目..."
- mvn clean package -DskipTests
artifacts:
paths:
- target/*.jar # 保存构建产物
expire_in: 1 hour # 产物有效期
test_job:
stage: test
script:
- echo "运行单元测试..."
- mvn test
dependencies:
- build_job # 依赖build_job的产物
deploy_job:
stage: deploy
script:
- echo "部署到测试服务器..."
- scp target/*.jar user@test-server:/opt/app/
- ssh user@test-server "cd /opt/app/ && nohup java -jar *.jar &"
only:
- master # 仅master分支触发
when: manual # 手动触发(生产环境建议)
build→test→deploy),需按顺序执行;build_job),支持script(命令)、artifacts(产物传递)、only(分支过滤)等参数;MAVEN_OPTS),避免硬编码。通过Prometheus+Grafana监控GitLab性能:
sudo yum install -y prometheus-node-exporter
sudo systemctl start prometheus-node-exporter
sudo systemctl enable prometheus-node-exporter
sudo vi /etc/ssh/sshd_config,设置PasswordAuthentication no);/etc/gitlab/gitlab.rb中的external_url为https://your-domain.com,并执行gitlab-ctl reconfigure;.gitlab-ci.yml中通过$VAR_NAME引用。gitlab-backup命令结合cron定时任务(如每天凌晨2点备份);.gitlab-ci.yml的environment关键字定义dev/test/prod环境,实现差异化部署。通过以上步骤,可实现GitLab在CentOS上的全生命周期自动化运维,覆盖从环境部署到代码交付的全流程,显著提升开发效率和系统稳定性。