在 Debian 上落地 GitLab 自动化运维,建议以 GitLab CI/CD 为核心,配合 Ansible 做机器配置与变更,按需引入 Docker 统一构建环境,并配套 HTTPS、备份、监控与日志 等工程化能力,实现从代码提交到上线的全流程自动化与可观测。
一、整体架构与工具选型
- 代码与流水线:使用 GitLab CI/CD,在仓库根目录维护 .gitlab-ci.yml 定义 stages(如 build/test/deploy),由 GitLab Runner 执行作业,可运行在 Shell 或 Docker 执行器上。
- 配置与变更:用 Ansible 编排 Debian 节点,完成 GitLab 安装、配置、升级、服务重启 等标准化操作,减少人工改动与漂移。
- 运行环境:CI 任务优先使用 Docker 镜像 提供一致依赖;生产部署可按需容器化或直接在目标主机部署。
- 安全与合规:全站 HTTPS/TLS、定期备份、日志集中与监控告警 作为必选项,保障可用性与可追溯性。
二、快速落地步骤
- 安装与初始化 GitLab
- 准备环境:安装依赖(如 curl、openssh-server、ca-certificates),可选 postfix 作为邮件服务。
- 添加仓库并安装:执行官方安装脚本添加仓库,设置 EXTERNAL_URL 后安装 gitlab-ce,首次配置执行 gitlab-ctl reconfigure 完成初始化。
- 安装与注册 GitLab Runner
- 安装 Runner 软件包,使用 gitlab-runner register 将 Runner 注册到项目或实例,选择合适的 executor(shell/docker) 与标签。
- 编写流水线
- 在仓库根目录创建 .gitlab-ci.yml,定义 stages 与 jobs,示例见下文;推送代码自动触发构建、测试、部署。
- 配置网络与防火墙
- 开放 80/443 端口(如使用 UFW:ufw allow 80,443),确保外部可访问;反向代理或 Ingress 场景按需调整。
- 安全与运维基线
- 启用 HTTPS/TLS(证书签发后配置到 GitLab),设置 备份策略(如每日备份与保留周期),接入 监控与日志(如 Prometheus/Grafana、ELK)。
三、关键配置示例
- 使用 Ansible 部署与配置 GitLab
- Playbook 片段(安装、写入 external_url、重启服务):
- name: Deploy GitLab
hosts: gitlab_servers
become: yes
tasks:
- name: Update apt cache
apt: update_cache: yes
- name: Install GitLab CE
apt:
name: gitlab-ce
state: present
- name: Configure external_url
lineinfile:
path: /etc/gitlab/gitlab.rb
regexp: '^external_url ’
line: ‘external_url “https://gitlab.example.com”’
backup: yes
- name: Reconfigure and restart
command: gitlab-ctl reconfigure
notify: restart gitlab
handlers:
- name: restart gitlab
command: gitlab-ctl restart
- 使用 GitLab CI 编排构建测试与部署
- 示例 .gitlab-ci.yml(可按需扩展 stages 与 jobs):
- stages:
- build_job:
stage: build
script:
例如:make build / npm run build / mvn package
- test_job:
stage: test
script:
例如:make test / npm test / mvn test
- deploy_job:
stage: deploy
script:
例如:rsync/scp 发布,或执行部署脚本
only:
- Runner 注册要点:选择 executor(如 docker/shell),配置 tags 与 variables(如 SSH 私钥、部署目标),确保作业隔离与可复用。
四、安全与运维最佳实践
- 全站 HTTPS/TLS:使用 Let’s Encrypt 或企业 CA 签发证书,配置到 GitLab,强制 HTTPS 访问。
- 定期备份与演练:配置备份保留策略与异地/离线副本,定期校验可恢复性,避免单点数据风险。
- 监控与日志:启用 Prometheus/Grafana 监控实例与作业指标,集中收集 GitLab 日志 并设置告警,快速定位异常。
- 变更标准化:以 Ansible 统一管理配置与升级流程,避免手工改动;变更前后保留审计与回滚方案。
- Runner 治理:按项目/环境划分 tags 与 executor,启用 缓存/制品库,隔离生产与测试作业,控制资源配额。