yabusygin.gitlab
Ansible 角色:gitlab
一个用于设置 GitLab 版本 13.0 或更新版本的 Ansible 角色。
要求
该角色使用 community.docker.docker_compose 模块。因此,控制节点上需要 community.docker 集合。
执行此角色时,受管节点需具备以下要求:
建议使用 yabusygin.docker 角色在受管节点上安装所有要求。
角色变量
以下是快速变量参考。请参见下面的 Wiki 和 “示例剧本” 部分获取示例。
Docker 配置
gitlab_image
-- 要使用的 Docker 容器镜像,默认值:gitlab/gitlab-ce:latest
。gitlab_restart_policy
-- Docker 容器 重启策略。值:always
、on-failure
、unless-stopped
。Docker 默认情况下在任何情况下都不重新启动容器。
URL
gitlab_hostname
-- GitLab 主机的域名。默认值:gitlab.test
。gitlab_web_port
-- Web UI 端口号。默认值:80
。gitlab_registry_port
-- 容器注册表端口号。默认值:5050
。gitlab_ssh_port
-- Git shell SSH 端口号。默认值:22
。
HTTPS
gitlab_https_enable
-- 启用 HTTPS。默认:no
。gitlab_letsencrypt_enable
-- 启用与 Let’s Encrypt 的自动 HTTPS。默认:no
。gitlab_https_key
-- 控制主机上的私钥路径。gitlab_https_cert
-- 控制主机上的证书链路径。
外发邮件
gitlab_email_enable
-- 启用外发邮件。值:yes
、no
。默认值:no
。gitlab_email_from_mailbox
-- 外发邮件中 “发件人” 标头的邮箱值。gitlab_email_from_display_name
-- 外发邮件中 “发件人” 标头的显示名称值。gitlab_email_reply_to_mailbox
-- 外发邮件中 “回复到” 标头的邮箱值。gitlab_email_smtp_server_host
-- SMTP 服务器名称。gitlab_email_smtp_server_port
-- SMTP 服务器端口。gitlab_email_smtp_transport_security
-- 传输层安全机制。值:tls
(SMTPS)、starttls
。gitlab_email_smtp_verify_server_cert
-- 验证 SMTP 服务器证书,当选择tls
或starttls
传输层安全机制。默认值:yes
。gitlab_email_smtp_ca_cert
-- 用于验证 SMTP 服务器证书的 CA 证书的本地路径。gitlab_email_smtp_user_auth_method
-- SMTP 用户认证方式。值:plain
、login
、cram_md5
。gitlab_email_smtp_user_name
-- SMTP 用户名。gitlab_email_smtp_user_password
-- SMTP 用户密码。
应用服务器 (Puma)
变量参考:
gitlab_workers
-- Puma 工作进程的数量。gitlab_min_threads
-- Puma 线程的最小数量。gitlab_max_threads
-- Puma 线程的最大数量。
监控
变量参考:
gitlab_monitoring_whitelist
-- 被允许执行健康检查的监控端点的地址/子网列表。
备份
有关详细信息,请参见 GitLab 文档。
自动备份
gitlab_backup_cron_enable
-- 启用执行定期备份的 cron 任务。默认值:no
。gitlab_backup_cron_minute
-- cron 命令行的 “分钟” 字段。必填变量。请参见crontab(5)
。gitlab_backup_cron_hour
-- cron 命令行的 “小时” 字段。必填变量。请参见crontab(5)
。gitlab_backup_cron_day_of_month
-- cron 命令行的 “月份中的天” 字段。默认值:*
。gitlab_backup_cron_month
-- cron 命令行的 “月份” 字段。默认值:*
。gitlab_backup_cron_day_of_week
-- cron 命令行的 “星期几” 字段。默认值:*
。gitlab_backup_cron_docker_cmd
-- 备份 cron 任务用来调用 Docker 引擎的命令。默认:docker
。gitlab_backup_cron_docker_compose_cmd
-- 备份 cron 任务用来调用 Docker Compose 的命令。默认:docker compose
。
上传备份到 S3 兼容存储
gitlab_backup_upload_enable
-- 启用将备份上传到远程存储。默认值:no
。gitlab_backup_upload_s3_region
-- AWS 区域。gitlab_backup_upload_s3_bucket
-- 用于存储备份对象的 S3 存储桶。必填变量。gitlab_backup_upload_s3_access_key_id
-- 访问密钥 ID。必填变量。gitlab_backup_upload_s3_secret_access_key
-- 秘密访问密钥。必填变量。gitlab_backup_upload_s3_endpoint
-- S3 兼容存储的 HTTP API 端点。gitlab_backup_upload_s3_path_style_enable
-- 使用路径样式访问存储桶(请参见 访问存储桶的方法)。
限制本地备份文件的保留时间
gitlab_backup_keep_time
-- 设置gitlab_rails['backup_keep_time']
值。
依赖
如果使用 yabusygin.docker 角色安装 Docker 和其他要求,建议启用 用户命名空间重映射 (请参见下面的示例)。
示例剧本
默认设置(Docker 和其他要求已安装):
- name: 设置 GitLab
hosts: gitlab
tasks:
- name: 设置 GitLab
ansible.builtin.import_role:
name: yabusygin.gitlab
使用 yabusygin.docker 角色进行自定义:
---
- name: 设置自定义 Docker 和 GitLab
hosts: gitlab
tasks:
- name: 设置 Docker
ansible.builtin.import_role:
name: yabusygin.docker
vars:
userns-remap: default
log-driver: json-file
log-opts:
max-size: 10m
max-file: "3"
- name: 设置 GitLab
ansible.builtin.import_role:
name: yabusygin.gitlab
vars:
gitlab_image: gitlab/gitlab-ee:latest
gitlab_restart_policy: always
gitlab_hostname: gitlab.example.com
gitlab_web_port: 3443
gitlab_registry_port: 5001
gitlab_ssh_port: 2222
gitlab_https_enable: yes
gitlab_https_key: https/gitlab.key.pem
gitlab_https_cert: https/gitlab.crt.pem
gitlab_workers: 2
gitlab_min_threads: 4
gitlab_max_threads: 4
gitlab_monitoring_whitelist:
- 192.168.10.39
- 10.0.1.0/24
gitlab_email_enable: yes
gitlab_email_from_mailbox: [email protected]
gitlab_email_from_display_name: GitLab
gitlab_email_reply_to_mailbox: [email protected]
gitlab_email_smtp_server_host: smtp.example.com
gitlab_email_smtp_server_port: 587
gitlab_email_smtp_transport_security: starttls
gitlab_email_smtp_user_auth_method: login
gitlab_email_smtp_user_name: gitlab
gitlab_email_smtp_user_password: Pa$$w0rD
gitlab_backup_cron_enable: yes
gitlab_backup_cron_minute: 0
gitlab_backup_cron_hour: 2
gitlab_backup_cron_docker_cmd: /usr/bin/docker
gitlab_backup_cron_docker_compose_cmd: /usr/local/bin/docker-compose
gitlab_backup_upload_enable: yes
gitlab_backup_upload_type: s3
gitlab_backup_upload_s3_endpoint: https://ams3.digitaloceanspaces.com
gitlab_backup_upload_s3_region: ams3
gitlab_backup_upload_s3_bucket: my.s3.bucket
gitlab_backup_upload_s3_access_key_id: AKIAKIAKI
gitlab_backup_upload_s3_secret_access_key: secret123
gitlab_backup_keep_time: 604800
许可证
MIT
作者信息
Alexey Busygin <yaabusygin@gmail.com>