lrk.sonarqube
Rola Ansible: SonarQube (lrk.sonarqube)
To Ansible Rola, która instaluje SonarQube.
Obsługiwane systemy operacyjne
Ta rola była testowana na następujących systemach operacyjnych:
- EL - 7
- Debian - Stretch
Wymagania
Wymagania dla SonarQube są następujące:
- Zainstalowana Oracle JRE 11 lub OpenJDK 11 i nowsze.
W środowisku produkcyjnym upewnij się, że zmienna sonar_db_embedded
jest ustawiona na false i skonfiguruj zmienne sonar_db_*.
SonarQube obsługuje następujące bazy danych: MySQL, Oracle, PostgreSQL i Microsoft SQLServer.
Aby uzyskać więcej informacji, zajrzyj do wymagań SonarQube.
Instalacja wtyczek SonarQube
Ta rola obsługuje instalację wtyczek według procedury "Instalacja wtyczki SonarQube". Obsługiwane są zarówno metody z marketplace, jak i manualne.
Należy zauważyć, że ta rola nie obsługuje wcześniej zainstalowanych wtyczek. Musisz samodzielnie usunąć poprzednie wersje.
Aby zainstalować wtyczki, należy wymienić je w słowniku sonar_plugins
, dostępne są następujące opcje:
name
: nazwa wtyczki; w przypadku wtyczki z marketplace powinna to być nazwa manifestu wtyczki (json) z tutaj, dla wtyczek manualnych może to być nazwa folderu wtyczki z tutaj lub podanie opcjiurl
(patrz poniżej);version
: wersja wtyczki;commercial
: czy jest to wtyczka komercyjna (inny adres pobierania), ma sens tylko dla wtyczek manualnych;url
: link do pliku jar wtyczki; jeśli podany, rola nie próbuje znaleźć wtyczki i używa tego linku; nie ma sensu dla wtyczek z marketplace, ponieważ adres pobierania powinien być podany w manifeście;marketplace
: czy to wtyczka manualna czy z marketplace, domyślnie false.
Przykład:
sonar_plugins:
- name: "sonar-city-model-plugin"
version: "3.3"
commercial: true
url: "http://www.qalitax.com/descargas/product/sonar-city-model-plugin-3.3.jar?customerSurnames=update-center&customerCompany=sonar-update-center&customerName=sonarqube&[email protected]"
- name: "ansible"
version: "2.4.0"
marketplace: true
Jak testować lokalnie z Vagrant
- Zainstaluj Vagrant oraz VirtualBox.
- Zainicjalizuj virtualenv i zainstaluj wymagane pakiety, na przykład:
python -m venv ~/.virtualenvs/molecule
. ~/.virtualenvs/molecule/bin/activate
pip install -r molecule/vagrant/requirements.txt
- Uruchom testy (domyślnie używana jest maszyna CentOS):
molecule test -s vagrant
- (opcjonalnie) Uruchom testy dla innego systemu operacyjnego (w tym przypadku ubuntu):
MOLECULE_DISTRO=ubuntu/trusty64 molecule test -s vagrant
Zmienne roli
Dostępne zmienne wraz z wartościami domyślnymi wymienione są poniżej (zobacz defaults/main.yml
)
---
---
# plik domyślny dla ansible-role-sonarqube/
# Katalog instalacyjny SonarQube
sonar_install_directory: /opt/sonarqube
# Katalog podstawowy SonarQube
sonar_base_dir: "{{ sonar_install_directory }}/sonarqube-{{ sonar_version }}"
# Katalog demona SonarQube
sonar_daemon_dir: "{{ sonar_base_dir }}/bin/linux-x86-{{ ansible_userspace_bits }}"
# Katalog konfiguracji SonarQube
sonar_conf_dir: "{{ sonar_base_dir }}/conf"
sonar_logs_dir: "/var/log/sonarqube"
# Ścieżki do plików danych trwałych (wbudowana baza danych i indeks wyszukiwania)
sonar_data_dir: "{{ sonar_base_dir }}/data"
# Ścieżki do plików tymczasowych
sonar_temp_dir: "{{ sonar_base_dir }}/temp"
# Wersja SonarQube do zainstalowania
sonar_version: 5.6.7
# Grupa systemowa SonarQube
sonar_group: sonar
# Użytkownik systemowy SonarQube
sonar_user: sonar
# Parametr LimitNOFILE dla usługi SonarQube
sonar_limitnofile: 65536
# Wtyczki SonarQube do zainstalowania (zobacz dokładny opis powyżej)
sonar_plugins: []
# Użyj wbudowanej bazy danych H2, nie do środowiska produkcyjnego
sonar_db_embedded: true
sonar_db_embedded_port: 9092
# Dane logowania JDBC SonarQube
sonar_db_user: ""
sonar_db_pass: ""
# URL JDBC SonarQube
sonar_jdbc_url: ""
# Maksymalna liczba aktywnych połączeń JDBC SonarQube
sonar_jdbc_maxactive: 60
# Maksymalna liczba połączeń, które mogą pozostać bezczynne w puli,
# bez uwalniania dodatkowych, lub ujemna dla braku limitu.
sonar_jdbc_maxidle: 5
# Minimalna liczba połączeń, które mogą pozostać bezczynne w puli,
# bez tworzenia dodatkowych, lub zero, aby nie tworzyć ich wcale.
sonar_jdbc_minidle: 2
# Maksymalna liczba milisekund, które pula będzie czekać (gdy nie ma dostępnych połączeń)
# na zwrócenie połączenia przed wyrzuceniem wyjątku lub <= 0, aby czekać bez limitu.
sonar_jdbc_maxwait: 5000
sonar_jdbc_min_evictable_idle_time_millis: 600000
sonar_jdbc_time_between_eviction_runs_millis: 30000
# Konfiguracja Serwera WWW SonarQube
sonar_web_java_opts: ""
# Binding adres IP. Dla serwerów z więcej niż jednym adresem IP, ta właściwość określa,
# który adres będzie używany do nasłuchiwania na określonych portach.
sonar_web_host: 0.0.0.0
# Kontekst internetowy. Gdy jest ustawiony, musi zaczynać się od ukośnika (np. /sonarqube).
sonar_web_context: ""
# TCP port dla przychodzących połączeń HTTP. Domyślna wartość to 9000.
sonar_web_port: 9000
# Maksymalna liczba połączeń, które serwer zaakceptuje i przetworzy w danym czasie.
sonar_web_http_max_threads: 50
# Funkcje Elasticsearch
# Domyślna wartość to 9001. Powinna być zablokowana przez zaporę i nie być dostępna w Internecie.
sonar_search_port: 9001
sonar_search_host: 127.0.0.1
#----------------------------------------------------------------------------------------
# LOGOWANIE
sonar_log_level: "INFO"
# Polityka rotacji plików logów
sonar_log_rolling_policy: "time:yyyy-MM-dd"
# Maksymalna liczba plików do zachowania, jeśli włączona jest polityka rotacji.
sonar_log_max_files: 7
# Przykładowa konfiguracja LDAP
# sonar_ldap:
# url: 'ldap://your_ldap_url'
#--------------------------------------------------------------------------------------------------
# INNE
# Opóźnienie w sekundach między przetwarzaniem kolejki powiadomień. Domyślna wartość to 60 sekund.
sonar_notifications_delay: 60
Zależności
Nie ma bezpośrednich zależności. JDK powinno być zainstalowane jako pierwsze.
Przykładowy playbook
- hosts: servers
pre_tasks:
- name: Zainstaluj zależności pakietów.
package:
name: "{{ item }}"
state: "present"
with_items:
- unzip
roles:
- lrk.sonarqube
Aktualizacja
Proszę przetestować aktualizację najpierw w środowisku staging.
Proces składa się z następujących kroków:
- Zmień zmienną
sonar_version
. - Przejrzyj zmienną
sonar_plugins
zgodnie z https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/. - Uruchom rolę nad istniejącą instalacją. Ansible:
- utworzy folder instalacyjny
- umieści w nim binaria nowego SonarQube z wtyczkami
- zatrzyma aktualnie działającą usługę
- zaktualizuje konfiguracje
- ponownie uruchomi usługę
- upewni się, że usługa internetowa została uruchomiona, a numer wersji SonarQube pojawia się w web.log
- upewni się, że działająca wersja Sonar odpowiada oczekiwanej
- Następnie musisz otworzyć http://yourSonarQubeServerURL/setup i postępować zgodnie z instrukcjami zaawansowanej konfiguracji, opisanymi w https://docs.sonarqube.org/latest/setup/upgrading/.
Należy zwrócić uwagę:
- rola nie tworzy kopii zapasowej bazy danych
- rola nie porównuje wersji. Proszę unikać pomyłkowego downgrade'u
- rola nie usuwa folderu z poprzednią instalacją, więc po aktualizacji ścieżka określona w zmiennej
sonar_install_directory
będzie zawierać więcej niż jedensonar_base_dir
.
Licencja
Licencja Apache, Wersja 2.0
Odnośniki
Informacje o autorze
Ta rola została stworzona przez Lrk.
ansible-galaxy install lrk.sonarqube