ansible_role_gitea
Ansible роль gitea - Установка сервера gitea
Эта роль устанавливает и управляет сервером 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 пользователь, используемый Giteagitea_group
: UNIX группа, используемая Giteagitea_home
: Базовая директория для работыgitea_dl_url
: URL, откуда будет загружен скомпилированный бинарник giteagitea_systemd_cap_net_bind_service
: ДобавляетAmbientCapabilities=CAP_NET_BIND_SERVICE
в файл сервиса systemdgitea_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
: Нужно ли развертывать конфигурацию fail2bangitea_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 Role - Gitea
ansible-galaxy install thomas-maurice/ansible-role-gitea