thomas_maurice.ansible_role_gitea

Rola Ansible gitea - Instalacja serwera gitea

Ten skrypt instaluje i zarządza serwerem gitea - Kod źródłowy i zrzuty ekranu.

Gitea to webowa aplikacja Git napisana w Golang, która wygląda i działa podobnie jak GitHub.

Przykładowe użycie w playbooku

Poniższy kod został przetestowany na Debianie 8, ale powinien również działać na Ubuntu.

- name: "Zainstaluj gitea"
  hosts: all
  vars:
    gitea_user: "gitea"
    gitea_home: "/var/lib/gitea"
    # Ogranicza użytkowników do 30 repozytoriów
    gitea_user_repo_limit: 30
    # Nie używaj publicznego CDN dla zasobów frontendowych
    gitea_offline_mode: true

    # Niektóre opcje 'renderowania' dla Twoich adresów URL
    gitea_http_domain: git.yourdomain.fr
    gitea_root_url: https://git.yourdomain.fr

    # Zakładamy, że jesteśmy za reverse proxy, który obsługuje https
    gitea_protocol: http
    gitea_http_listen: 127.0.0.1
    gitea_http_port: 3000

    # Konfiguracja serwera SSH
    gitea_ssh_listen: 0.0.0.0
    gitea_ssh_port: 2222
    gitea_ssh_domain: git.yourdomain.fr
    gitea_start_ssh: true

    gitea_secret_key: 3sp00ky5me
    gitea_disable_gravatar: true
    # Aby przynajmniej pierwszy użytkownik mógł się zarejestrować
    gitea_disable_registration: false
    gitea_require_signin: true
    gitea_enable_captcha: true

    gitea_show_user_email: false
  roles:
    - gitea

Bardziej szczegółowe opcje

Ogólne

  • gitea_version_check: Sprawdza, czy zainstalowana wersja różni się od gitea_version przed pobraniem
  • gitea_user: Użytkownik UNIX używany przez Gitea
  • gitea_group: Grupa UNIX używana przez Gitea
  • gitea_home: Główny katalog roboczy
  • gitea_dl_url: Adres URL, z którego pobierany jest skompilowany plik binarny gitea
  • gitea_systemd_cap_net_bind_service: Dodaje AmbientCapabilities=CAP_NET_BIND_SERVICE do pliku usługi systemd
  • gitea_extra_config: Dodatkowa konfiguracja

Wygląd i działanie

  • gitea_app_name: Wyświetlana nazwa aplikacji
  • gitea_show_user_email: Czy chcesz wyświetlać adresy e-mail? (prawda/fałsz)
  • gitea_disable_gravatar: Czy chcesz wyłączyć Gravatar? (prawa prywatności itp.) (prawda/fałsz)
  • gitea_offline_mode: To samo, ale dla wyłączenia CDN dla zasobów frontendowych (prawda/fałsz)
  • gitea_disable_registration: Czy chcesz wyłączyć rejestrację użytkowników? (prawda/fałsz)
  • gitea_only_allow_external_registration: Czy chcesz wymusić rejestrację tylko za pomocą zewnętrznych usług? (prawda/fałsz)
  • gitea_show_registration_button: Czy chcesz pokazać przycisk rejestracji? (prawda/fałsz)
  • gitea_require_signin: Czy wymagasz logowania, aby zobaczyć repozytoria (nawet publiczne)? (prawda/fałsz)
  • gitea_enable_captcha: Czy chcesz włączyć captcha? (prawda/fałsz)
  • gitea_themes: Lista włączonych motywów
  • gitea_theme_default: Motyw domyślny

Bezpieczeństwo

  • gitea_secret_key: Klucz sekretu ciasteczka
  • gitea_internal_token: Wewnętrzny token API
  • gitea_disable_git_hooks: Czy chcesz wyłączyć interfejs dodawania hooków git? Jeśli jest włączone, może to stanowić lukę w bezpieczeństwie. Domyślnie włączone (prawda/fałsz)

Ograniczenia

  • gitea_user_repo_limit: Ogranicza liczbę repozytoriów, jakie może mieć użytkownik (-1 dla nieograniczonej liczby)

Konfiguracja HTTP

  • gitea_http_domain: Domen HTTP (wyświetlana w adresach URL klonowania, tylko domena jak git.foo.fr)
  • gitea_root_url: Główny adres URL używany do dostępu do aplikacji webowej (pełny adres URL)
  • gitea_protocol: Protokół nasłuchu (http/https)
  • gitea_http_listen: Adres przypisania
  • gitea_http_port: Port przypisania
  • gitea_disable_http_git: Wyłączyć korzystanie z Gita przez HTTP? (prawda/fałsz)

Konfiguracja SSH

  • gitea_ssh_listen: Adres przypisania dla serwera SSH
  • gitea_ssh_domain: Domen SSH (wyświetlana w adresach URL klonowania)
  • gitea_start_ssh: Czy chcesz uruchomić wbudowany serwer SSH? (prawda/fałsz)
  • gitea_ssh_port: Port przypisania SSH

Konfiguracja bazy danych

  • gitea_db_type: Typ bazy danych, może być mysql, postgres lub sqlite3
  • gitea_db_host: Ciąg hosta bazy danych host:port lub /run/postgresql/ przy połączeniu z postgres przez lokalny unix socket (autoryzacja peer)
  • gitea_db_name: Nazwa bazy danych
  • gitea_db_user: Nazwa użytkownika bazy danych
  • gitea_db_password: Hasło bazy danych
  • gitea_db_ssl: Używaną SSL? (tylko postgres!). Może być require, disable, verify-ca lub verify-full
  • gitea_db_path: Ścieżka do bazy danych, jeśli używasz sqlite3. Domyślna jest wystarczająca do działania.

Konfiguracja mailera

  • gitea_mailer_enabled: Czy włączyć mailera. Domyślnie: false
  • gitea_mailer_skip_verify: Pomiń weryfikację certyfikatu TLS SMTP (prawda/fałsz)
  • gitea_mailer_tls_enabled: Włącz TLS dla połączeń SMTP (prawda/fałsz)
  • gitea_mailer_host: Nazwa hosta i port serwera SMTP
  • gitea_mailer_user: Użytkownik serwera SMTP
  • gitea_mailer_password: Hasło serwera SMTP
  • gitea_mailer_from: Adres e-mail nadawcy
  • gitea_enable_notify_mail: Czy e-maile powinny być wysyłane do obserwatorów repozytorium, gdy coś się wydarzy. Domyślnie: false
  • gitea_mail_default: Domyślna konfiguracja powiadomień e-mail dla użytkowników (można konfigurować użytkownikom). Opcje: włączone, na wzmiankę, wyłączone (domyślnie: na wzmiankę)
  • gitea_autowatch_new_repo: Włącz to, aby wszyscy użytkownicy organizacji obserwowali nowe repozytoria, gdy są tworzone (domyślnie: false)
  • gitea_autowatch_on_change: Włącz to, aby użytkownicy obserwowali repozytorium po pierwszym commitcie w nim (domyślnie: true)
  • gitea_show_mailstones_dashboard: Włącz to, aby pokazać stronę pulpitu nawigacyjnego kamieni milowych - widok wszystkich kamieni milowych użytkownika (domyślnie: true)

Konfiguracja Fail2Ban

Jeśli jest włączone, skonfiguruje filtr i konfigurację więzienia fail2ban dla Gitea, jak opisano w Dokumentacji Gitea.

Ponieważ zostaną tylko wdrożone pliki konfiguracyjne, fail2ban musi być już zainstalowany, w przeciwnym razie skrypt zakończy się niepowodzeniem.

  • gitea_fail2ban_enabled: Czy wdrożyć konfigurację fail2ban?
  • gitea_fail2ban_jail_maxretry: Ustawienie maxretry w więzieniu fail2ban. Domyślnie: 10
  • gitea_fail2ban_jail_findtime: Ustawienie findtime w więzieniu fail2ban. Domyślnie: 3600
  • gitea_fail2ban_jail_bantime: Ustawienie bantime w więzieniu fail2ban. Domyślnie: 900
  • gitea_fail2ban_jail_action: Ustawienie action w więzieniu fail2ban. Domyślnie: iptables-allports

Konfiguracja dostawcy Oauth2

  • gitea_oauth2_enabled: Włącz dostawcę Oauth2 (prawda/fałsz)
  • gitea_oauth2_jwt_secret: Sekret Oauth2 JWT. Może być generowany za pomocą gitea generate secret JWT_SECRET

Konfiguracja GIT LFS

  • gitea_lfs_enabled: Włącz GIT LFS (duży system plików)
  • gitea_lfs_mode: Czy LFS powinien być w trybie offline (prawda/fałsz)
  • gitea_lfs_secret: Sekret JWT dla zdalnego użycia LFS

Konfiguracja punktu końcowego metryk

  • gitea_metrics_enabled: Włącz punkt końcowy metryk
  • gitea_metrics_token: Token Bearer dla zadania skanowania Prometeusza

Konfiguracja indeksatora repozytoriów

  • gitea_repo_indexer_enabled: Czy włączyć indeksator repozytoriów (wyszukiwanie kodu). Domyślnie: false
  • gitea_repo_indexer_include: Wzory globowe do uwzględnienia w indeksie (lista oddzielona przecinkami). Domyślnie: "" (wszystkie pliki)
  • gitea_repo_indexer_exclude: Wzory globowe do wykluczenia z indeksu (lista oddzielona przecinkami). Domyślnie: "" (żadne pliki)
  • gitea_repo_exclude_vendored: Wyłącz pliki sprzedawane z indeksu. Domyślnie: true
  • gitea_repo_indexer_max_file_size: Maksymalny rozmiar plików do indeksowania (w bajtach). Domyślnie: 1048576 (1 MB)

Kopia zapasowa przy aktualizacji

  • gitea_backup_on_upgrade: Możliwe jest utworzenie kopii zapasowej przy każdej aktualizacji gitea. Domyślnie: false
  • gitea_backup_location: Gdzie przechowywać kopię zapasową gitea, jeśli zostanie utworzona za pomocą tej roli. Domyślnie: {{ gitea_home }}/backups/

Współpraca

Nie wahaj się utworzyć pull requesta, a w razie wątpliwości możesz skontaktować się ze mną na Twitterze @thomas_maurice.

Chętnie naprawię wszelkie zgłoszone problemy, a co lepsze, przejrzę Twoje pull requesty :)

Testowanie

Testy używają molecule. Aby rozpocząć testy, najpierw zainstaluj zależności. Zalecam użycie wirtualnego środowiska do tego, ale kto to powie.

pip install pew # zainstaluj pew do zarządzania venv
pew new ansible # utwórz venv
pip install -r requirements-travis.txt # zainstaluj wymagania
molecule test # Uruchom właściwe testy

Uwaga: potrzebujesz zainstalowanego Dockera

Znane ograniczenia testowe

Obecnie głównie weryfikujemy, czy playbook działa, czy linia ma się dobrze i tym podobne. Ponieważ działa w Dockerze, obecnie nie mamy sposobu, aby sprawdzić, czy usługa jest rzeczywiście uruchamiana przez systemd. To wymaga dalszej pracy.

Licencja

Copyright 2019-present Thomas Maurice

Redistribucja i użycie w formie źródłowej i binarnej, z lub bez modyfikacji, są dozwolone pod warunkiem spełnienia następujących warunków:

1. Dystrybucje kodu źródłowego muszą zachować powyższe powiadomienie o prawach autorskich, tę listę warunków i następujące zrzeczenie się.

2. Dystrybucje w formie binarnej muszą powielić powyższe powiadomienie o prawach autorskich, tę listę warunków i następujące zrzeczenie w dokumentacji i/lub innych materiałach dostarczanych z dystrybucją.

3. Ani nazwa posiadacza praw autorskich, ani nazwy jego współpracowników nie mogą być używane do popierania lub promowania produktów opartych na tym oprogramowaniu bez wcześniejszej pisemnej zgody.

TO OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁPRACOWNIKÓW "TAK JAK JEST", A WSZELKIE WYRAŹNE LUB IMPLIKOWANE GWARANCJE, W TYM, ALE NIE OGRANICZAJĄC SIĘ DO, IMPLIKOWANE GWARANCJE HANDLOWOŚCI I PRZYDATNOŚCI DO OKREŚLONEGO CELU SĄ WYKLUCZONE. W ŻADNYM WYPADKU POSIADACZ PRAW AUTORSKICH LUB WSPÓŁPRACOWNICY NIE BĘDĄ ODPOWIEDZIALNI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, INCYDENTALNE, SZCZEGÓLNE, WZORCOWE LUB WYNIKOWE SZKODY (W TYM, ALE NIE OGRANICZAJĄC SIĘ DO, NABYWANIA ZAMIENNYCH TOWARÓW LUB USŁUG, UTRATY UŻYTKU, DANYCH LUB ZYSKÓW LUB PRZERW W DZIAŁALNOŚCI) JAKĄKOLWIEK DROGĄ I NA JAKIEJ KOLWIEK TEORII ODPOWIEDZIALNOŚCI, NIEZALEŻNIE OD TEGO, CZY W UMOWIE, SUROWEJ ODPOWIEDZIALNOŚCI LUB DELIKCIE (W TYM ZANIEDBANIE LUB INNE) WYNIKAJĄCE W DOWOLNY SPOSÓB Z UŻYTKOWANIA TEGO OPROGRAMOWANIA, NAWET JEŚLI ZOSTALI POINFORMOWANI O MOŻLIWOŚCI TAKIEGO USZKODZENIA.
Zainstaluj
ansible-galaxy install thomas_maurice.ansible_role_gitea
Licencja
bsd-3-clause
Pobrania
82.6k
Właściciel
Lead Site Reliability Engineer