ansible_role_gitea

Ansible роль gitea - Установка сервера gitea

Статус сборки Ansible Роль Ansible Роль Оценка качества Ansible

Эта роль устанавливает и управляет сервером gitea - Исходный код и скриншоты.

Gitea - это веб-приложение для Git-репозиториев, написанное на Go, с тем же внешним видом, что и 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

    # Предполагаем, что мы за обратным прокси, который будет
    # обрабатывать https для нас, поэтому связываемся на localhost:3000 по HTTP
    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: UNIX пользователь, используемый Gitea
  • gitea_group: UNIX группа, используемая Gitea
  • gitea_home: Базовая директория для работы
  • gitea_dl_url: URL, откуда будет загружен скомпилированный бинарник gitea
  • gitea_systemd_cap_net_bind_service: Добавляет AmbientCapabilities=CAP_NET_BIND_SERVICE в файл сервиса systemd
  • 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: Секретный ключ куки
  • gitea_internal_token: Внутренний API токен
  • gitea_disable_git_hooks: Хотите ли вы отключить интерфейс для добавления git хуков? Если включено, это может быть проблемой безопасности, так как может быть использовано для RCE. По умолчанию true (true/false)

Ограничения

  • gitea_user_repo_limit: Ограничьте количество репозиториев, которые может иметь пользователь (-1 для неограниченного)

Конфигурация HTTP

  • gitea_http_domain: HTTP домен (отображается в ваших URL для клонирования, просто домен, например, git.foo.fr)
  • gitea_root_url: Корневой URL, используемый для доступа к вашему веб-приложению (полный URL)
  • gitea_protocol: Протокол прослушивания (http/https)
  • gitea_http_listen: Адрес привязки
  • gitea_http_port: Порт привязки
  • gitea_disable_http_git: Отключить использование Git через HTTP? (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 или /run/postgresql/ при подключении к postgres через локальный unix сокет (аутентификация по партнерству)
  • gitea_db_name: Имя базы данных
  • gitea_db_user: Имя пользователя базы данных
  • gitea_db_password: Пароль базы данных
  • gitea_db_ssl: Использовать SSL? (только postgres!). Может быть require, disable, verify-ca или verify-full
  • gitea_db_path: Путь к базе данных, если используете sqlite3. По умолчанию это значение достаточно хорошее для работы.

Конфигурация почтового сервиса

  • gitea_mailer_enabled: Включить ли почтовый сервис. По умолчанию: false
  • gitea_mailer_skip_verify: Пропустить проверку сертификата SMTP TLS (true/false)
  • gitea_mailer_tls_enabled: Включить TLS для SMTP соединений (true/false)
  • gitea_mailer_host: Имя хоста и порт SMTP сервера
  • gitea_mailer_user: Имя пользователя SMTP сервера
  • gitea_mailer_password: Пароль SMTP сервера
  • gitea_mailer_from: Адрес отправителя
  • gitea_enable_notify_mail: Должен ли e-mail отправляться наблюдателям репозитория, когда происходит какое-то событие. По умолчанию: false
  • gitea_mail_default: Конфигурация по умолчанию для уведомлений по электронной почте для пользователей (настраиваемый пользователем). Опции: включено, при упоминании, отключить (По умолчанию: при упоминании)
  • gitea_autowatch_new_repo: Включите это, чтобы позволить всем пользователям организации следить за новыми репозиториями при их создании (По умолчанию: false)
  • gitea_autowatch_on_change: Включите это, чтобы сделать пользователей наблюдателями репозитория после их первого коммита в него (По умолчанию: true)
  • gitea_show_mailstones_dashboard: Включите это, чтобы показать страницу дашборда с вехами - обзор всех вех пользователя (По умолчанию: true)

Конфигурация Fail2Ban

Если включено, будет развернут фильтр и конфигурация тюрьмы fail2ban для Gitea, как описано в документации Gitea.

Так как это будет только конфигурационные файлы, fail2ban уже должен быть установлен, иначе роль не выполнится.

  • gitea_fail2ban_enabled: Нужно ли развертывать конфигурацию fail2ban
  • gitea_fail2ban_jail_maxretry: Настройка maxretry для тюрьмы fail2ban. По умолчанию: 10
  • gitea_fail2ban_jail_findtime: Настройка findtime для тюрьмы fail2ban. По умолчанию: 3600
  • gitea_fail2ban_jail_bantime: Настройка bantime для тюрьмы fail2ban. По умолчанию: 900
  • gitea_fail2ban_jail_action: Настройка action для тюрьмы fail2ban. По умолчанию: 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: JWT секрет для удаленного использования LFS

Конфигурация эндпоинта метрик

  • gitea_metrics_enabled: Включить эндпоинт метрик
  • gitea_metrics_token: Токен Bearer для задачи сбора Prometheus

Конфигурация индексатора репозиториев

  • 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 (1 МБ)

резервное копирование при обновлении

  • gitea_backup_on_upgrade: При желании можно создать резервную копию с каждым обновлением gitea. По умолчанию: false
  • gitea_backup_location: Где хранить резервную копию gitea, если она создается с помощью этой роли. По умолчанию: {{ gitea_home }}/backups/

Вклад

Не стесняйтесь создавать pull request, и если у вас есть вопросы, вы можете написать мне в Twitter @thomas_maurice.

Я с радостью исправлю любые открытые проблемы или, еще лучше, рассмотрю ваши pull request :)

Тестирование

Тестирование использует molecule. Чтобы начать тесты, сначала установите зависимости. Я рекомендую использовать виртуальное окружение для этого, но кто я, чтобы говорить вам, что делать.

pip install pew # установить pew для управления venv
pew new ansible # создать venv
pip install -r requirements-travis.txt # установить зависимости
molecule test # Запустить тесты

Примечание: вам необходимо установить Docker

Известные ограничения тестирования

В данный момент в основном проверяется, что плейбук выполняется, линт проходит и подобные вещи. Поскольку тесты проходят в Docker, у нас в данный момент нет способа проверить, запущен ли сервис фактически через systemd и так далее. Это нужно будет доработать.

Лицензия

Copyright 2019-present Thomas Maurice

Перераспределение и использование в исходных и бинарных формах, с или без изменений, разрешены при соблюдении следующих условий:

1. Перераспределения исходного кода должны сохранять вышеуказанное уведомление об авторских правах, этот список условий и следующий отказ от ответственности.

2. Перераспределения в бинарной форме должны воспроизводить вышеуказанное уведомление об авторских правах, этот список условий и следующий отказ от ответственности в документации и/или других материалах, предоставленных с распределением.

3. Ни имя владельца авторских прав, ни имена его участников не могут быть использованы для поддержки или продвижения продуктов, производных от этого программного обеспечения без предварительного специального письменного разрешения.

ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ "КАК ЕСТЬ", И ЛЮБЫЕ ЯВНЫЕ ИЛИ НЕЯВНЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, НЕНАРУШЕНИЕМ ГАРАНТИЙ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ ОТКЛОНЯЮТСЯ. В НИКЕМ СЛУЧАЕ ВЛОЖИТЕЛЬ АВТОРСКИХ ПРАВ И УЧАСТНИКИ НЕ НОСЯТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ШТРАФНЫЕ ИЛИ ПОСЛЕДСТВЕННЫЕ УЩЕРБЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАГОТОВКИ ЗАМЕНА ТОВАРОВ ИЛИ УСЛУГ; УТРАТУ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПЕРЕРЫВ ФИРМЫ) ЛЮБЫМ ОБРАЗОМ, ВНЕ ЗАВИСИМОСТИ ОТ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО В ДОГОВОРЕ, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТЕ (ВКЛЮЧАЯ НЕДОБРОСОВЕСТНОСТЬ ИЛИ ИНОЕ), ВОЗНИКШИЕ ЛЮБЫМ ОБРАЗОМ ИЗ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫЛИ ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
Установить
ansible-galaxy install thomas-maurice/ansible-role-gitea
Лицензия
bsd-3-clause
Загрузки
70918
Владелец
Lead Site Reliability Engineer