thomas_maurice.ansible_role_gitea

Rol de Ansible gitea - Instalar un servidor gitea

Estado de Construcción Rol de Ansible Rol de Ansible Puntuación de Calidad de Ansible

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: Agrega AmbientCapabilities=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 ser mysql, postgres o sqlite3.
  • gitea_db_host: Cadena de host de base de datos host: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 ser require, disable, verify-ca o verify-full.
  • gitea_db_path: Ruta de la base de datos, si usas sqlite3. 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 de maxretry de fail2ban. Predeterminado: 10.
  • gitea_fail2ban_jail_findtime: Configuración de findtime de fail2ban. Predeterminado: 3600.
  • gitea_fail2ban_jail_bantime: Configuración de bantime de fail2ban. Predeterminado: 900.
  • gitea_fail2ban_jail_action: Configuración de action 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 con gitea 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.
Instalar
ansible-galaxy install thomas_maurice.ansible_role_gitea
Licencia
bsd-3-clause
Descargas
82.6k
Propietario
Lead Site Reliability Engineer