lean_delivery.sonarqube

Rola SonarQube

Licencja
Galaxy
Ansible
Ansible

Ta rola instaluje SonarQube z zestawem rozszerzonych wtyczek. Przykład playbooka poniżej wykorzystuje również openJDK, bazę danych PostgreSQL oraz serwer internetowy nginx z włączonym https.

Zobacz artykuł tutaj: https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html

Oprócz domyślnych wtyczek, które są dołączone do SonarQube, ta rola może zainstalować następujące polecane wtyczki:

  • checkstyle-sonar-plugin
  • sonar-pmd-plugin
  • sonar-findbugs-plugin
  • mutation-analysis-plugin
  • sonar-jdepend-plugin
  • sonar-jproperties-plugin
  • sonar-groovy-plugin
  • sonar-dependency-check-plugin
  • sonar-json-plugin
  • sonar-yaml-plugin
  • sonar-ansible-plugin
  • sonar-shellcheck-plugin

Możesz również zainstalować opcjonalne wtyczki. Uważaj, niektóre z nich nie są obsługiwane w najnowszych wersjach SonarQube:

  • qualinsight-sonarqube-smell-plugin
  • qualinsight-sonarqube-badges
  • sonar-auth-github-plugin
  • sonar-auth-bitbucket-plugin
  • sonar-bitbucket-plugin (dla Bitbucket Cloud)
  • sonar-stash-plugin (dla Bitbucket Server)
  • sonar-auth-gitlab-plugin
  • sonar-gitlab-plugin
  • sonar-xanitizer-plugin
  • sonar-build-breaker-plugin
  • sonar-issueresolver-plugin
  • sonarqube-community-branch-plugin
  • sonar-aemrules-plugin

Zobacz matrycę wtyczek tutaj: https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/

Ta rola oferuje również kilka opcji konfiguracyjnych:

  • możliwość migracji bazy danych przy aktualizacji SonarQube do nowej wersji
  • możliwość ustawienia webhooka Jenkins
  • możliwość przywrócenia niestandardowych profili
  • konfiguracja LDAP
  • możliwość zmiany hasła dla użytkownika admin

Zobacz przykład pipeline'a Jenkins tutaj: https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy

Wymagania

  • Obsługiwane wersje Ansible:
    • 5 (2.12) - jeszcze nie przetestowane, powinno działać
    • 6 (2.13)
    • 7 (2.14)
  • Obsługiwane wersje SonarQube:
    • 7.9.6 poprzednia LTS
    • 8.9.10 poprzednia LTS
    • 9.9.6 LTS
    • 10.0 - 10.6
  • Obsługiwany Java:
    • 11
    • 17 (użyj dla SonarQube 9.9+)
  • Obsługiwane bazy danych:
    • PostgreSQL
    • MySQL (niezalecane)
    • osadzony H2 (tylko do testów)
  • Obsługiwane serwery www (odwrócony proxy dla https):
    • nginx
  • Obsługiwane systemy operacyjne:
    • CentOS, RHEL
      • 7
    • Ubuntu
      • 18.04
      • 20.04 - jeszcze nie przetestowane, powinno działać
      • 22.04 - jeszcze nie przetestowane, powinno działać

Java, baza danych i serwer www z samopodpisanym certyfikatem powinny być wcześniej zainstalowane. Użyj następujących ról z galaxy:

  • lean_delivery.java
  • geerlingguy.postgresql
  • jdauphant.ssl-certs
  • nginxinc.nginx

Zmienna Roli

  • sonar_version - wersja SonarQube
  • sonar_path - katalog instalacyjny
    domyślnie: /opt/sonarqube
  • sonar_user - użytkownik do instalacji SonarQube
    domyślnie: sonar
  • sonar_group - grupa użytkownika SonarQube
    domyślnie: sonar
  • sonar_nofile - liczba deskryptorów plików, które użytkownik uruchamiający SonarQube może otworzyć
    domyślnie: 65536
  • sonar_nproc - liczba wątków, które użytkownik uruchamiający SonarQube może otworzyć
    domyślnie: 4096
  • sonar_max_map_count - limit liczby mmap wymagany dla Elasticsearch
    domyślnie: 262144
  • sonar_log_level - poziom logowania serwera SonarQube
    domyślnie: INFO
  • sonar_java_opts:
    • web - dodatkowe opcje java dla części webowej SonarQube
      domyślnie: -Xmx512m -Xms128m
    • es - dodatkowe opcje java dla Elasticsearch
      domyślnie: -Xms512m -Xmx512m
    • ce - dodatkowe opcje java dla Compute Engine
      domyślnie: -Xmx512m -Xms128m
  • web:
    • host - adres IP wiązania SonarQube
      domyślnie: 0.0.0.0
    • port - port TCP dla przychodzących połączeń HTTP
      domyślnie: 9000
    • path - kontekst webowy
      domyślnie: /
  • sonar_db - ustawienia bazy danych
    • type
      domyślnie: postgresql
    • port
      domyślnie: 5432
    • host
      domyślnie: localhost
    • name
      domyślnie: sonar
    • user
      domyślnie: sonar
    • password
      domyślnie: sonar
    • options
      domyślnie:
  • sonar_store - dostawca artefaktów sonarqube
    domyślnie: https://sonarsource.bintray.com/Distribution/sonarqube
  • sonar_check_url - url do weryfikacji uruchomienia SonarQube
    domyślnie: http://{{ web.host }}:{{ web.port }}
  • sonar_download - czy pobranie sonarqube.zip jest wymagane. Ustaw na false, gdy nie ma możliwości pobrania zip i wrzuć zip do sonar_download_path ręcznie przed uruchomieniem playbooka. domyślnie: true
  • sonar_download_path - lokalna ścieżka pobierania
    domyślnie: /tmp/
  • sonar_proxy_type - serwer www, obecnie obsługiwany jest tylko nginx
    domyślnie: nginx
  • sonar_proxy_server_name - nazwa serwera w konfiguracji serwera www
    domyślnie: '{{ ansible_fqdn }}'
  • sonar_proxy_http - czy dozwolone jest połączenie http
    domyślnie: false
  • sonar_proxy_http_port - port http
    domyślnie: 80
  • sonar_proxy_ssl - czy dozwolone jest połączenie https
    domyślnie: true
  • sonar_proxy_ssl_port - port https
    domyślnie: 443
  • sonar_proxy_ssl_cert_path - ścieżka do certyfikatu
    domyślnie: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'
  • sonar_proxy_ssl_key_path - ścieżka do klucza
    domyślnie: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'
  • sonar_proxy_client_max_body_size - ustawienie maksymalnego rozmiaru ciała klienta w konfiguracji serwera www
    domyślnie: 32m
  • sonar_install_recommended_plugins - czy wymagane są wtyczki zalecane
    domyślnie: true
  • sonar_recommended_plugins - lista polecanych wtyczek\
  • sonar_update_default_plugins - czy wymagana jest aktualizacja domyślnych wtyczek
    domyślnie: true
  • sonar_default_plugins - lista domyślnych wtyczek\
  • sonar_install_optional_plugins - czy wymagane są opcjonalne wtyczki
    domyślnie: false
  • sonar_optional_plugins - lista opcjonalnych wtyczek wyłączonych domyślnie. Nie wszystkie z nich są obsługiwane w najnowszych wersjach SonarQube, dlatego wybierz te, których potrzebujesz i nadpisz tę właściwość.
  • sonar_excluded_plugins - lista starych wtyczek wykluczonych z instalatora SonarQube
  • sonar_default_excluded_plugins - lista domyślnych wtyczek, których nie potrzebujesz
    domyślnie: []
  • sonar_web_user - nazwa użytkownika dla użytkownika admin
    domyślnie: admin
  • sonar_web_password - hasło dla użytkownika admin
    domyślnie: admin
  • change_password - ustaw true, aby zmienić hasło
    domyślnie: false
  • sonar_web_old_password - bieżące hasło (przed zmianą)
    domyślnie: admin
  • sonar_migrate_db - czy migracja bazy danych jest wymagana. Ustaw na true podczas aktualizacji istniejącego SonarQube do nowej wersji.
    domyślnie: false
  • sonar_set_jenkins_webhook - czy wymagana jest konfiguracja webhooka jenkins
    domyślnie: false
  • sonar_jenkins_webhook_name - nazwa webhooka jenkins
    domyślnie: jenkins
  • sonar_jenkins_webhook_url - url webhooka jenkins
    domyślnie: https://jenkins.example.com/sonarqube-webhook/
  • sonar_restore_profiles - czy przywrócenie profilu jest wymagane
    domyślnie: false
  • sonar_profile_list - lista profili do przywrócenia
  • sonar_updatecenter_activate - aktywować centrum aktualizacji SonarQube
    domyślnie: true

Sekcja konfiguracji Ldap.
Zobacz https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6, aby uzyskać opis

  • ldap:
    domyślnie: undefined
    • authenticator_downcase
      domyślnie: false
    • url
      domyślnie: ldap://myserver.mycompany.com
    • bind_dn
      domyślnie: my_bind_dn
    • bind_password
      domyślnie: my_bind_password
    • authentication
      domyślnie: simple
    • realm
      domyślnie:
    • contextFactoryClass
      domyślnie: com.sun.jndi.ldap.LdapCtxFactory
    • StartTLS
      domyślnie: false
    • followReferrals
      domyślnie: true
    • user_base_dn
      domyślnie: ou=Users,dc=mycompany,dc=com
    • user_request
      domyślnie: (&(objectClass=inetOrgPerson)(uid={login}))
    • user_real_name_attribute
      domyślnie: cn
    • user_email_attribute
      domyślnie: mail
    • group_base_dn
      domyślnie: ou=Groups,dc=sonarsource,dc=com
    • group_request
      domyślnie: (&(objectClass=posixGroup)(memberUid={uid}))
    • group_idAttribute
      domyślnie: cn

Przykład Playbooka

---
- nazwa: Zainstaluj SonarQube
  gospodarze: sonarqube
  become: true
  vars:
    # java
    java_major_version: 17
    transport: repositories
    # postgresql
    postgresql_users:
      - name: sonar
        password: sonar
    postgresql_databases:
      - name: sonar
    # ssl-certs
    ssl_certs_path_owner: nginx
    ssl_certs_path_group: nginx
    ssl_certs_common_name: sonarqube.example.com
    # sonarqube
    sonar_version: 10.6.0.92116
    sonar_check_url: 'http://{{ ansible_fqdn }}:9000'
    sonar_proxy_server_name: sonarqube.example.com
    sonar_install_optional_plugins: true
    sonar_optional_plugins: 
      - 'https://github.com/adnovum/sonar-build-breaker/releases/download/{{ build_breaker_epversion }}'
    sonar_default_excluded_plugins:
      - '{{ sonar_plugins_path }}/sonar-flex-plugin-2.12.0.4568.jar'
    sonar_web_password: your_new_secure_password
    change_password: true
    sonar_web_old_password: admin
    sonar_migrate_db: false  # ustaw na true, jeśli aktualizujesz SonarQube do nowej wersji 
    sonar_set_jenkins_webhook: true
    sonar_jenkins_webhook_url: https://jenkins.example.com/sonarqube-webhook/
    sonar_restore_profiles: true
    sonar_profile_list:
      - files/example_profile.xml
  pre_tasks:
    - nazwa: zainstaluj klucz rpm
      rpm_key:
        state: present
        key: https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
      when: ansible_distribution == 'RedHat'
    - nazwa: zainstaluj epel
      package:
        name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
        state: present
      when: ansible_distribution == 'RedHat'
    # usuń wcześniej zainstalowanego sonara, aby uniknąć konfliktu wtyczek
    - nazwa: usuń sonar
      file:
        path: '{{ sonar_path }}'
        state: absent
  role:
    - rola: lean_delivery.java
    - rola: geerlingguy.postgresql
    - rola: nginxinc.nginx
    - rola: jdauphant.ssl-certs
    - rola: lean_delivery.sonarqube
  tasks:
    - nazwa: usuń domyślną konfigurację nginx
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
    - nazwa: przeładuj nginx
      command: 'nginx -s reload'

Licencja

Apache

Informacje o autorze

autorzy:

Zainstaluj
ansible-galaxy install lean_delivery.sonarqube
Licencja
apache-2.0
Pobrania
25.1k
Właściciel
Simplify by using!