thomas_maurice.ansible_role_gitea
Ansible角色 gitea - 安装gitea服务器
这个角色用于安装和管理一个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二进制文件的URLgitea_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
: 数据库类型,可以是mysql
、postgres
或sqlite3
gitea_db_host
: 数据库主机字符串host:port
,或在通过本地Unix套接字连接Postgres时使用/run/postgresql/
(对等认证)gitea_db_name
: 数据库名称gitea_db_user
: 数据库用户名gitea_db_password
: 数据库密码gitea_db_ssl
: 使用SSL?(仅Postgres!)。可以是require
、disable
、verify-ca
或verify-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