thomas_maurice.ansible_role_gitea
Rol de Ansible gitea - Instalar un servidor gitea
Este rol instala y gestiona un servidor gitea - Código fuente y capturas de pantalla.
Gitea es una aplicación web de repositorios Git escrita en Golang, con un aspecto similar al de GitHub.
Ejemplo de uso en un playbook
El siguiente código ha sido probado en Debian 8 y debería funcionar en Ubuntu también.
- name: "Instalar gitea"
hosts: all
vars:
gitea_user: "gitea"
gitea_home: "/var/lib/gitea"
# Para limitar tus usuarios a 30 repos
gitea_user_repo_limit: 30
# No usar un CDN público para los recursos de frontend
gitea_offline_mode: true
# Algunas opciones de 'renderizado' para tus URLs
gitea_http_domain: git.tudominio.fr
gitea_root_url: https://git.tudominio.fr
# Aquí asumimos que estamos detrás de un proxy inverso que
# manejará https por nosotros, por lo que vinculamos en localhost:3000 usando HTTP
gitea_protocol: http
gitea_http_listen: 127.0.0.1
gitea_http_port: 3000
# Configuración del servidor SSH
gitea_ssh_listen: 0.0.0.0
gitea_ssh_port: 2222
# Para el renderizado de URLs nuevamente
gitea_ssh_domain: git.tudominio.fr
gitea_start_ssh: true
gitea_secret_key: 3sp00ky5me
gitea_disable_gravatar: true
# Para permitir que al menos tu primer usuario se registre
gitea_disable_registration: false
gitea_require_signin: true
gitea_enable_captcha: true
gitea_show_user_email: false
roles:
- gitea
Opciones más detalladas
General
gitea_version_check
: Verificar si la versión instalada !=gitea_version
antes de iniciar la descarga del binario.gitea_user
: Usuario UNIX utilizado por Gitea.gitea_group
: Grupo UNIX utilizado por Gitea.gitea_home
: Directorio base para trabajar.gitea_dl_url
: La URL de donde se descargará el binario compilado de gitea.gitea_systemd_cap_net_bind_service
: AgregaAmbientCapabilities=CAP_NET_BIND_SERVICE
al archivo de servicio de systemd.gitea_extra_config
: Configuración adicional.
Apariencia
gitea_app_name
: Nombre de la aplicación que se muestra.gitea_show_user_email
: ¿Quieres mostrar las direcciones de correo electrónico? (true/false)gitea_disable_gravatar
: ¿Quieres desactivar Gravatar? (privacidad, etc.) (true/false)gitea_offline_mode
: Igual pero para desactivar CDNs para recursos de frontend (true/false)gitea_disable_registration
: ¿Quieres desactivar el registro de usuarios? (true/false)gitea_only_allow_external_registration
: ¿Quieres forzar el registro solo usando servicios de terceros? (true/false)gitea_show_registration_button
: ¿Quieres mostrar el botón de registro? (true/false)gitea_require_signin
: ¿Requieres iniciar sesión para ver repos? (incluso los públicos) (true/false)gitea_enable_captcha
: ¿Quieres habilitar los captchas? (true/false)gitea_themes
: Lista de temas habilitados.gitea_theme_default
: Tema predeterminado.
Seguridad
gitea_secret_key
: Clave secreta para las cookies.gitea_internal_token
: Token de API interna.gitea_disable_git_hooks
: ¿Quieres desactivar la interfaz para agregar ganchos de git? Si está habilitado, podría ser un error de seguridad ya que puede usarse para RCE. Por defecto es true (true/false).
Límites
gitea_user_repo_limit
: Limitar cuántos repos puede tener un usuario (-1 para ilimitado).
Configuración HTTP
gitea_http_domain
: Dominio HTTP (visible en tus URLs de clonación, solo el dominio como git.foo.fr).gitea_root_url
: URL raíz utilizada para acceder a tu aplicación web (URL completa).gitea_protocol
: Protocolo de escucha (http/https).gitea_http_listen
: Dirección de enlace.gitea_http_port
: Puerto de enlace.gitea_disable_http_git
: ¿Desactivar el uso de Git sobre HTTP? (true/false).
Configuración SSH
gitea_ssh_listen
: Dirección de enlace para el servidor SSH.gitea_ssh_domain
: Dominio SSH (visible en tus URLs de clonación).gitea_start_ssh
: ¿Quieres iniciar un servidor SSH incorporado? (true/false).gitea_ssh_port
: Puerto de enlace SSH.
Configuración de base de datos
gitea_db_type
: Tipo de base de datos, puede sermysql
,postgres
osqlite3
.gitea_db_host
: Cadena de host de base de datoshost:port
o/run/postgresql/
al conectar a postgres a través de un socket unix local (autenticación por par).gitea_db_name
: Nombre de la base de datos.gitea_db_user
: Nombre de usuario de la base de datos.gitea_db_password
: Contraseña de la base de datos.gitea_db_ssl
: ¿Usar SSL? (solo postgres). Puede serrequire
,disable
,verify-ca
overify-full
.gitea_db_path
: Ruta de la base de datos, si usassqlite3
. El predeterminado es suficiente para funcionar.
Configuración del correo
gitea_mailer_enabled
: Habilitar el correo. Predeterminado:false
.gitea_mailer_skip_verify
: Saltar la verificación del certificado SMTP TLS (true/false).gitea_mailer_tls_enabled
: Habilitar TLS para conexiones SMTP (true/false).gitea_mailer_host
: Nombre de host y puerto del servidor SMTP.gitea_mailer_user
: Nombre de usuario del servidor SMTP.gitea_mailer_password
: Contraseña del servidor SMTP.gitea_mailer_from
: Dirección de correo del remitente.gitea_enable_notify_mail
: ¿Debería enviarse un correo electrónico a los observadores de un repositorio cuando algo sucede? Predeterminado:false
.gitea_mail_default
: Configuración predeterminada para notificaciones por correo electrónico para usuarios (configurable por el usuario). Opciones: enabled, onmention, disable (Predeterminado:onmention
).gitea_autowatch_new_repo
: Habilita esto para que todos los usuarios de la organización sigan nuevos repos cuando se crean (Predeterminado:false
).gitea_autowatch_on_change
: Habilita esto para que los usuarios sigan un repositorio después de su primer compromiso en él (Predeterminado:true
).gitea_show_mailstones_dashboard
: Habilita esto para mostrar la página del panel de hitos - una vista de todos los hitos del usuario (Predeterminado:true
).
Configuración de Fail2Ban
Si está habilitado, esto implementará un filtro y configuración de cárcel fail2ban para Gitea según se describe en la Documentación de Gitea.
Como esto solo implementará archivos de configuración, fail2ban ya debe estar instalado o, de lo contrario, el rol fallará.
gitea_fail2ban_enabled
: Si se debe implementar la configuración de fail2ban o no.gitea_fail2ban_jail_maxretry
: Configuración demaxretry
de fail2ban. Predeterminado:10
.gitea_fail2ban_jail_findtime
: Configuración defindtime
de fail2ban. Predeterminado:3600
.gitea_fail2ban_jail_bantime
: Configuración debantime
de fail2ban. Predeterminado:900
.gitea_fail2ban_jail_action
: Configuración deaction
de fail2ban. Predeterminado:iptables-allports
.
Configuración del proveedor Oauth2
gitea_oauth2_enabled
: Habilitar el proveedor Oauth2 (true/false).gitea_oauth2_jwt_secret
: Clave secreta JWT de Oauth2. Se puede generar congitea generate secret JWT_SECRET
.
Configuración de GIT LFS
gitea_lfs_enabled
: Habilitar GIT LFS (sistema de archivos grande).gitea_lfs_mode
: ¿debería LFS estar en modo fuera de línea (true/false)?gitea_lfs_secret
: Clave JWT para el uso remoto de LFS.
Configuración del endpoint de métricas
gitea_metrics_enabled
: Habilitar el endpoint de métricas.gitea_metrics_token
: Token Bearer para la tarea de recopilación de Prometheus.
Configuración del indexador de repositorios
gitea_repo_indexer_enabled
: Si habilitar o no el indexador de repositorios (búsqueda de código). Predeterminado:false
.gitea_repo_indexer_include
: Patrones glob para incluir en el índice (lista separada por comas). Predeterminado:""
(todos los archivos).gitea_repo_indexer_exclude
: Patrones glob para excluir del índice (lista separada por comas). Predeterminado:""
(ningún archivo).gitea_repo_exclude_vendored
: Excluye archivos vendor del índice. Predeterminado:true
.gitea_repo_indexer_max_file_size
: Tamaño máximo de archivos a ser indexados (en bytes). Predeterminado:1048576
(1 MB).
Copia de seguridad en actualizaciones
gitea_backup_on_upgrade
: Opcionalmente, se puede crear una copia de seguridad con cada actualización de gitea. Predeterminado:false
.gitea_backup_location
: Dónde almacenar la copia de seguridad de gitea si se crea una con este rol. Predeterminado:{{ gitea_home }}/backups/
.
Contribuciones
No dudes en crear un pull request, y si tienes dudas, puedes contactarme en Twitter @thomas_maurice.
Estoy feliz de corregir cualquier problema que se haya abierto, o mejor aún, revisar tus pull requests :)
Pruebas
Las pruebas utilizan molecule. Para iniciar las pruebas, primero instala las dependencias. Te recomendaría utilizar un entorno virtual para eso, pero quién soy yo para decirte qué hacer.
pip install pew # instalar pew para gestionar los entornos virtuales.
pew new ansible # crear el entorno virtual.
pip install -r requirements-travis.txt # instalar los requisitos.
molecule test # Ejecutar las pruebas.
Nota: necesitas Docker instalado.
Limitaciones conocidas de las pruebas
Actualmente, solo se verifica que el playbook se ejecute, que el lint esté bien y cosas por el estilo. Dado que se ejecuta en Docker, actualmente no tenemos forma de comprobar si el servicio se inicia realmente mediante systemd, etc. Esto debe trabajarse.
Licencia
Copyright 2019-presente Thomas Maurice
La redistribución y el uso en formas de fuente y binario, con o sin modificación, están permitidos siempre que se cumplan las siguientes condiciones:
1. La redistribución del código fuente debe retener el aviso de copyright anterior, esta lista de condiciones y la siguiente renuncia.
2. La redistribución en forma binaria debe reproducir el aviso de copyright anterior, esta lista de condiciones y la siguiente renuncia en la documentación y/o otros materiales proporcionados con la distribución.
3. Ni el nombre del titular del copyright ni los nombres de sus contribuyentes pueden ser utilizados para respaldar o promover productos derivados de este software sin el permiso específico y previo por escrito.
ESTE SOFTWARE SE PROPORCIONA POR LOS TITULARES DEL COPYRIGHT Y COLABORADORES "TAL CUAL" Y CUALQUIER GARANTÍAS EXPRESAS O IMPLÍCITAS, INCLUYENDO, PERO NO LIMITÁNDOSE A, LAS GARANTÍAS IMPLICITAS DE COMERCIALIZACIÓN Y ADECUACIÓN PARA UN PROPÓSITO PARTICULAR SE RENUNCIAN. EN NINGÚN CASO SERÁN LOS TITULARES DEL COPYRIGHT O COLABORADORES RESPONSABLES POR CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO LIMITÁNDOSE A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTIVOS; PÉRDIDA DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) CUALQUIER MANERA QUE SEA CAUSADA Y EN CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUYENDO NEGLIGENCIA O DE OTRA FORMA) QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.
Ansible Role - Gitea
ansible-galaxy install thomas_maurice.ansible_role_gitea