lean_delivery.sonarqube

SonarQube Rolle

Lizenz Galaxy Ansible Ansible

Diese Rolle installiert SonarQube mit einer erweiterten Anzahl an Plugins. Das Beispiel Playbook verwendet auch openJDK, eine PostgreSQL-Datenbank und den nginx-Webserver mit aktiviertem HTTPS.

Siehe den Artikel hier: https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html

Neben den standardmäßigen Plugins kann die SonarQube-Rolle folgende empfohlene Plugins installieren:

  • 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

Außerdem können optionale Plugins installiert werden. Seien Sie vorsichtig, einige von ihnen werden in den neuesten SonarQube-Versionen nicht unterstützt:

  • qualinsight-sonarqube-smell-plugin
  • qualinsight-sonarqube-badges
  • sonar-auth-github-plugin
  • sonar-auth-bitbucket-plugin
  • sonar-bitbucket-plugin (für Bitbucket Cloud)
  • sonar-stash-plugin (für 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

Siehe die Plugin-Matrix hier: https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/

Diese Rolle bietet auch einige Konfigurationsoptionen:

  • Möglichkeit, die DB beim Aktualisieren von SonarQube auf eine neue Version zu migrieren
  • Möglichkeit, einen Jenkins-WebHook einzustellen
  • Möglichkeit, benutzerdefinierte Profile wiederherzustellen
  • LDAP-Konfiguration
  • Möglichkeit, das Passwort für den Admin-Benutzer zu ändern

Siehe das Jenkins-Pipeline-Beispiel hier: https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy

Anforderungen

  • Unterstützte Ansible-Versionen:
    • 5 (2.12) - nicht durch Tests abgedeckt, sollte aber funktionieren
    • 6 (2.13)
    • 7 (2.14)
  • Unterstützte SonarQube-Versionen:
    • 7.9.6 vorherige LTS
    • 8.9.10 vorherige LTS
    • 9.9.6 LTS
    • 10.0 - 10.6
  • Unterstützte Java-Versionen:
    • 11
    • 17 (benutzen für SonarQube 9.9+)
  • Unterstützte Datenbanken:
    • PostgreSQL
    • MySQL (nicht empfohlen)
    • eingebettete H2 (nur für Tests)
  • Unterstützte Webserver (Reverse Proxy für HTTPS):
    • nginx
  • Unterstützte Betriebssysteme:
    • CentOS, RHEL
      • 7
    • Ubuntu
      • 18.04
      • 20.04 - nicht durch Tests abgedeckt, sollte aber funktionieren
      • 22.04 - nicht durch Tests abgedeckt, sollte aber funktionieren

Java, Datenbank und Webserver mit selbstsigniertem Zertifikat sollten vorab installiert sein. Verwenden Sie folgende Galaxy-Rollen:

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

Rollen-Variablen

  • sonar_version - SonarQube-Version
  • sonar_path - Installationsverzeichnis
    Standard: /opt/sonarqube
  • sonar_user - Benutzer für die Installation von SonarQube
    Standard: sonar
  • sonar_group - Gruppe des SonarQube-Benutzers
    Standard: sonar
  • sonar_nofile - Anzahl der Dateideskriptoren, die der Benutzer, der SonarQube ausführt, öffnen kann
    Standard: 65536
  • sonar_nproc - Anzahl der Threads, die der Benutzer, der SonarQube ausführt, öffnen kann
    Standard: 4096
  • sonar_max_map_count - mmap-Zählerlimit, das für Elasticsearch erforderlich ist
    Standard: 262144
  • sonar_log_level - Protokollebene des SonarQube-Servers
    Standard: INFO
  • sonar_java_opts:
    • web - zusätzliche Java-Optionen für den Webteil von SonarQube
      Standard: -Xmx512m -Xms128m
    • es - zusätzliche Java-Optionen für Elasticsearch
      Standard: -Xms512m -Xmx512m
    • ce - zusätzliche Java-Optionen für die Compute Engine
      Standard: -Xmx512m -Xms128m
  • web:
    • host - IP-Adresse, die SonarQube bindet
      Standard: 0.0.0.0
    • port - TCP-Port für eingehende HTTP-Verbindungen
      Standard: 9000
    • path - Web-Kontext
      Standard: /
  • sonar_db - Datenbankeinstellungen
    • type
      Standard: postgresql
    • port
      Standard: 5432
    • host
      Standard: localhost
    • name
      Standard: sonar
    • user
      Standard: sonar
    • password
      Standard: sonar
    • options
      Standard:
  • sonar_store - SonarQube-Artefaktanbieter
    Standard: https://sonarsource.bintray.com/Distribution/sonarqube
  • sonar_check_url - URL zur Überprüfung des SonarQube-Starts
    Standard: http://{{ web.host }}:{{ web.port }}
  • sonar_download - muss sonarqube.zip heruntergeladen werden. Setzen Sie es auf false, wenn das Zip nicht heruntergeladen werden kann und legen Sie das Zip manuell vor dem Ausführen des Playbooks in den Pfad sonar_download_path ab. Standard: true
  • sonar_download_path - lokaler Downloadpfad
    Standard: /tmp/
  • sonar_proxy_type - Webserver, nginx wird zurzeit nur unterstützt
    Standard: nginx
  • sonar_proxy_server_name - Servername in der Webserver-Konfiguration
    Standard: '{{ ansible_fqdn }}'
  • sonar_proxy_http - ist eine HTTP-Verbindung erlaubt
    Standard: false
  • sonar_proxy_http_port - HTTP-Port
    Standard: 80
  • sonar_proxy_ssl - ist eine HTTPS-Verbindung erlaubt
    Standard: true
  • sonar_proxy_ssl_port - HTTPS-Port
    Standard: 443
  • sonar_proxy_ssl_cert_path - Pfad zum Zertifikat
    Standard: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'
  • sonar_proxy_ssl_key_path - Pfad zum Schlüssel
    Standard: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'
  • sonar_proxy_client_max_body_size - maximale Körpergröße für den Client in der Webserver-Konfiguration
    Standard: 32m
  • sonar_install_recommended_plugins - sind empfohlene Plugins erforderlich
    Standard: true
  • sonar_recommended_plugins - Liste der empfohlenen Plugins\
  • sonar_update_default_plugins - ist ein Update für die Standardplugins erforderlich
    Standard: true
  • sonar_default_plugins - Liste der Standardplugins\
  • sonar_install_optional_plugins - sind optionale Plugins erforderlich
    Standard: false
  • sonar_optional_plugins - Liste der optionalen Plugins, die standardmäßig deaktiviert sind. Nicht alle von ihnen werden in den neuesten SonarQube-Versionen unterstützt, also wählen Sie die aus, die Sie benötigen, und überschreiben Sie diese Eigenschaft.
  • sonar_excluded_plugins - Liste der alten Plugins, die im SonarQube-Installer ausgeschlossen sind
  • sonar_default_excluded_plugins - Liste der Standardplugins, die Sie nicht benötigen
    Standard: []
  • sonar_web_user - Benutzername für den Admin-Benutzer
    Standard: admin
  • sonar_web_password - Passwort für den Admin-Benutzer
    Standard: admin
  • change_password - setzen Sie true, um das Passwort zu ändern
    Standard: false
  • sonar_web_old_password - aktuelles Passwort (vor der Änderung)
    Standard: admin
  • sonar_migrate_db - ist eine DB-Migration erforderlich. Setzen Sie es auf true, wenn Sie eine bestehende SonarQube-Version auf eine neue Version aktualisieren.
    Standard: false
  • sonar_set_jenkins_webhook - ist die Konfiguration des Jenkins-WebHooks erforderlich
    Standard: false
  • sonar_jenkins_webhook_name - Name des Jenkins-WebHooks
    Standard: jenkins
  • sonar_jenkins_webhook_url - URL des Jenkins-WebHooks
    Standard: https://jenkins.example.com/sonarqube-webhook/
  • sonar_restore_profiles - ist eine Wiederherstellung der Profile erforderlich
    Standard: false
  • sonar_profile_list - Liste der wiederherzustellenden Profile
  • sonar_updatecenter_activate - SonarQube-Updatezentrum aktivieren
    Standard: true

LDAP-Konfigurationsabschnitt. Siehe https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 für eine Beschreibung

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

Beispiel-Playbook

---
- name: SonarQube installieren
  hosts: 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  # auf true setzen, wenn SonarQube auf eine neue Version aktualisiert wird 
    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:
    - name: RPM-Schlüssel installieren
      rpm_key:
        state: present
        key: https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
      when: ansible_distribution == 'RedHat'
    - name: EPEL installieren
      package:
        name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
        state: present
      when: ansible_distribution == 'RedHat'
    # vorhandenes Sonar löschen, um Konflikte mit Plugins zu vermeiden
    - name: Sonar löschen
      file:
        path: '{{ sonar_path }}'
        state: absent
  roles:
    - role: lean_delivery.java
    - role: geerlingguy.postgresql
    - role: nginxinc.nginx
    - role: jdauphant.ssl-certs
    - role: lean_delivery.sonarqube
  tasks:
    - name: Standard-nginx-Konfiguration löschen
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
    - name: nginx neu laden
      command: 'nginx -s reload'

Lizenz

Apache

Autoreninformation

autoren:

Über das Projekt

Lean Delivery SonarQube server install

Installieren
ansible-galaxy install lean_delivery.sonarqube
Lizenz
apache-2.0
Downloads
25.1k
Besitzer
Simplify by using!