thomas_maurice.ansible_role_gitea

Ansible角色 gitea - 安装gitea服务器

构建状态 Ansible角色 Ansible角色 Ansible质量评分

这个角色用于安装和管理一个gitea服务器 - 源码与截图

Gitea是一个用Go语言编写的Git仓库网页应用,与GitHub有相似的外观和感觉。

在剧本中使用的示例

以下代码已在Debian 8上测试,应该也可以在Ubuntu上运行。

- name: "安装gitea"
  hosts: all
  vars:
    gitea_user: "gitea"
    gitea_home: "/var/lib/gitea"
    # 限制每个用户最多30个仓库
    gitea_user_repo_limit: 30
    # 不使用公共CDN来加载前端资源
    gitea_offline_mode: true

    # 一些URL的渲染选项
    gitea_http_domain: git.yourdomain.fr
    gitea_root_url: https://git.yourdomain.fr

    # 假设我们在一个需要反向代理的环境下,
    # 所以我们通过HTTP在localhost:3000上绑定
    gitea_protocol: http
    gitea_http_listen: 127.0.0.1
    gitea_http_port: 3000

    # SSH服务器配置
    gitea_ssh_listen: 0.0.0.0
    gitea_ssh_port: 2222
    # URL渲染的域名
    gitea_ssh_domain: git.yourdomain.fr
    gitea_start_ssh: true

    gitea_secret_key: 3sp00ky5me
    gitea_disable_gravatar: true
    # 至少让第一个用户注册
    gitea_disable_registration: false
    gitea_require_signin: true
    gitea_enable_captcha: true

    gitea_show_user_email: false
  roles:
    - gitea

更详细的选项

一般配置

  • gitea_version_check: 在启动二进制文件下载前检查是否安装的版本不等于 gitea_version
  • gitea_user: Gitea使用的UNIX用户
  • gitea_group: Gitea使用的UNIX组
  • gitea_home: 工作的基本目录
  • gitea_dl_url: 下载编译后的gitea二进制文件的URL
  • gitea_systemd_cap_net_bind_service: 在systemd服务文件中添加AmbientCapabilities=CAP_NET_BIND_SERVICE
  • gitea_extra_config: 额外配置

外观和感觉

  • gitea_app_name: 显示的应用名称
  • gitea_show_user_email: 是否显示电子邮件地址? (true/false)
  • gitea_disable_gravatar: 是否禁用Gravatar? (隐私等) (true/false)
  • gitea_offline_mode: 同样用于禁用CDN加载前端资源 (true/false)
  • gitea_disable_registration: 是否禁用用户注册? (true/false)
  • gitea_only_allow_external_registration: 是否强制仅使用第三方服务注册? (true/false)
  • gitea_show_registration_button: 是否显示注册按钮? (true/false)
  • gitea_require_signin: 是否要求登录才能查看仓库(即使是公共仓库)? (true/false)
  • gitea_enable_captcha: 是否启用验证码? (true/false)
  • gitea_themes: 启用的主题列表
  • gitea_theme_default: 默认主题

安全性

  • gitea_secret_key: Cookie的密钥
  • gitea_internal_token: 内部API令牌
  • gitea_disable_git_hooks: 是否禁用添加git钩子的接口?如果启用可能会有安全漏洞,因为可以用于远程代码执行。默认为true (true/false)

限制

  • gitea_user_repo_limit: 限制每个用户可以拥有的仓库数量(-1表示无限制)

HTTP配置

  • gitea_http_domain: HTTP域名(在克隆URL中显示,仅域名,如git.foo.fr)
  • gitea_root_url: 访问web应用的根URL(完整URL)
  • gitea_protocol: 监听协议(http/https)
  • gitea_http_listen: 绑定地址
  • gitea_http_port: 绑定端口
  • gitea_disable_http_git: 是否禁用通过HTTP使用Git? (true/false)

SSH配置

  • gitea_ssh_listen: SSH服务器的绑定地址
  • gitea_ssh_domain: SSH域名(在克隆URL中显示)
  • gitea_start_ssh: 是否启动内置SSH服务器? (true/false)
  • gitea_ssh_port: SSH绑定端口

数据库配置

  • gitea_db_type: 数据库类型,可以是mysqlpostgressqlite3
  • gitea_db_host: 数据库主机字符串host:port,或在通过本地Unix套接字连接Postgres时使用/run/postgresql/(对等认证)
  • gitea_db_name: 数据库名称
  • gitea_db_user: 数据库用户名
  • gitea_db_password: 数据库密码
  • gitea_db_ssl: 使用SSL?(仅Postgres!)。可以是requiredisableverify-caverify-full
  • gitea_db_path: 如果使用sqlite3的DB路径。默认路径适合使用。

邮件配置

  • gitea_mailer_enabled: 是否启用邮件发送。默认:false
  • gitea_mailer_skip_verify: 跳过SMTP TLS证书验证 (true/false)
  • gitea_mailer_tls_enabled: 为SMTP连接启用TLS (true/false)
  • gitea_mailer_host: SMTP服务器主机名和端口
  • gitea_mailer_user: SMTP服务器用户名
  • gitea_mailer_password: SMTP服务器密码
  • gitea_mailer_from: 发件人邮件地址
  • gitea_enable_notify_mail: 是否在事件发生时向仓库观看者发送电子邮件。默认:false
  • gitea_mail_default: 用户邮件通知的默认配置(用户可配置)。选项:enabled、onmention、disable (默认:onmention)
  • gitea_autowatch_new_repo: 启用后,让所有组织用户在创建新仓库时自动观看(默认:false
  • gitea_autowatch_on_change: 启用后,让用户在第一次提交后观看该仓库(默认:true
  • gitea_show_mailstones_dashboard: 启用后显示里程碑仪表板页面 - 用户所有里程碑的视图(默认:true

Fail2Ban配置

如果启用,这将为Gitea部署一个fail2ban过滤器和监狱配置,如Gitea文档所述。

因为这只会部署配置文件,所以fail2ban必须已经安装,否则角色会失败。

  • gitea_fail2ban_enabled: 是否部署fail2ban配置
  • gitea_fail2ban_jail_maxretry: fail2ban监狱maxretry设置。默认:10
  • gitea_fail2ban_jail_findtime: fail2ban监狱findtime设置。默认:3600
  • gitea_fail2ban_jail_bantime: fail2ban监狱bantime设置。默认:900
  • gitea_fail2ban_jail_action: fail2ban监狱action设置。默认:iptables-allports

Oauth2提供者配置

  • gitea_oauth2_enabled: 启用Oauth2提供者 (true/false)
  • gitea_oauth2_jwt_secret: Oauth2 JWT密钥。可以通过gitea generate secret JWT_SECRET生成

GIT LFS配置

  • gitea_lfs_enabled: 启用GIT LFS(大文件存储)
  • gitea_lfs_mode: LFS是否处于离线模式 (true/false)
  • gitea_lfs_secret: 远程LFS使用的JWT密钥

监控端点配置

  • gitea_metrics_enabled: 启用监控端点
  • gitea_metrics_token: Prometheus抓取作业的Bearer令牌

仓库索引器配置

  • gitea_repo_indexer_enabled: 是否启用仓库索引器(代码搜索)。默认:false
  • gitea_repo_indexer_include: 要包含在索引中的Glob模式(以逗号分隔的列表)。默认:""(所有文件)
  • gitea_repo_indexer_exclude: 要排除在索引外的Glob模式(以逗号分隔的列表)。默认:""(所有文件)
  • gitea_repo_exclude_vendored: 从索引中排除捆绑文件。默认:true
  • gitea_repo_indexer_max_file_size: 要索引的最大文件大小(以字节为单位)。默认:1048576(1MB)

升级时备份

  • gitea_backup_on_upgrade: 可选的,每次更新gitea时都可以创建备份。默认:false
  • gitea_backup_location: 如果通过此角色创建备份,则备份存储位置。默认:{{ gitea_home }}/backups/

贡献

欢迎创建拉取请求,如有疑问可以通过 Twitter与我联系 @thomas_maurice

我很乐意解决任何已提交的问题,或者更好的,审查你的拉取请求 :)

测试

测试使用molecule。要开始 测试,首先安装依赖项。我推荐使用虚拟环境来管理,但我并不能告诉你该怎么做。

pip install pew # 安装pew来管理虚拟环境
pew new ansible # 创建虚拟环境
pip install -r requirements-travis.txt # 安装依赖项
molecule test # 运行实际测试

注意:你需要安装Docker

已知的测试限制

目前主要验证剧本是否运行正常、lint是否通过之类的。 由于它在Docker中运行,我们目前没有办法检查服务是否实际由systemd启动等。这需要改进。

许可证

版权所有 2019-现在 Thomas Maurice

在保留以上版权声明、条件清单以及以下免责声明的情况下,允许对源代码和二进制形式的重新分发和使用,无论是否经过修改。

1. 源代码的重新分发必须保留上述版权声明、条件清单以及以下免责声明。

2. 以二进制形式重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、条件清单和以下免责声明。

3. 未经特定的事先书面许可,版权持有者或其贡献者的名称不得用于支持或推广基于此软件产品的产品。

本软件由版权持有者和贡献者按“原样”提供,而无任何明示或暗示的担保,包括但不限于对特定用途的适销性和适用性的隐含担保。 在任何情况下,版权持有者或贡献者对任何直接、间接、附带、特殊、惩戒性或继发性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)不承担任何责任, 无论是因合同、严格责任或侵权(包括疏忽或其他原因)引起,或以任何方式与本软件的使用有关,即使在被告知可能发生这样的损害时。
安装
ansible-galaxy install thomas_maurice.ansible_role_gitea
许可证
bsd-3-clause
下载
82.6k
拥有者
Lead Site Reliability Engineer