lrk.sonarqube

Rola Ansible: SonarQube (lrk.sonarqube)

Molecule Galaxy Ansible Ansible Ansible

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 opcji url (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

  1. Zainstaluj Vagrant oraz VirtualBox.
  2. 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
  1. Uruchom testy (domyślnie używana jest maszyna CentOS):
molecule test -s vagrant
  1. (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:

  1. Zmień zmienną sonar_version.
  2. Przejrzyj zmienną sonar_plugins zgodnie z https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/.
  3. 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
  1. 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ż jeden sonar_base_dir.

Licencja

Licencja Apache, Wersja 2.0

Odnośniki

Informacje o autorze

Ta rola została stworzona przez Lrk.

O projekcie

An Ansible Role that install SonarQube.

Zainstaluj
ansible-galaxy install lrk.sonarqube
Licencja
apache-2.0
Pobrania
103.5k
Właściciel