lean_delivery.sonarqube
SonarQube Rolle
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
- CentOS, RHEL
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-Versionsonar_path
- Installationsverzeichnis
Standard: /opt/sonarqubesonar_user
- Benutzer für die Installation von SonarQube
Standard: sonarsonar_group
- Gruppe des SonarQube-Benutzers
Standard: sonarsonar_nofile
- Anzahl der Dateideskriptoren, die der Benutzer, der SonarQube ausführt, öffnen kann
Standard: 65536sonar_nproc
- Anzahl der Threads, die der Benutzer, der SonarQube ausführt, öffnen kann
Standard: 4096sonar_max_map_count
- mmap-Zählerlimit, das für Elasticsearch erforderlich ist
Standard: 262144sonar_log_level
- Protokollebene des SonarQube-Servers
Standard: INFOsonar_java_opts
:web
- zusätzliche Java-Optionen für den Webteil von SonarQube
Standard: -Xmx512m -Xms128mes
- zusätzliche Java-Optionen für Elasticsearch
Standard: -Xms512m -Xmx512mce
- zusätzliche Java-Optionen für die Compute Engine
Standard: -Xmx512m -Xms128m
web
:host
- IP-Adresse, die SonarQube bindet
Standard: 0.0.0.0port
- TCP-Port für eingehende HTTP-Verbindungen
Standard: 9000path
- Web-Kontext
Standard: /
sonar_db
- Datenbankeinstellungentype
Standard: postgresqlport
Standard: 5432host
Standard: localhostname
Standard: sonaruser
Standard: sonarpassword
Standard: sonaroptions
Standard:
sonar_store
- SonarQube-Artefaktanbieter
Standard: https://sonarsource.bintray.com/Distribution/sonarqubesonar_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: truesonar_download_path
- lokaler Downloadpfad
Standard: /tmp/sonar_proxy_type
- Webserver, nginx wird zurzeit nur unterstützt
Standard: nginxsonar_proxy_server_name
- Servername in der Webserver-Konfiguration
Standard: '{{ ansible_fqdn }}'sonar_proxy_http
- ist eine HTTP-Verbindung erlaubt
Standard: falsesonar_proxy_http_port
- HTTP-Port
Standard: 80sonar_proxy_ssl
- ist eine HTTPS-Verbindung erlaubt
Standard: truesonar_proxy_ssl_port
- HTTPS-Port
Standard: 443sonar_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: 32msonar_install_recommended_plugins
- sind empfohlene Plugins erforderlich
Standard: truesonar_recommended_plugins
- Liste der empfohlenen Plugins\sonar_update_default_plugins
- ist ein Update für die Standardplugins erforderlich
Standard: truesonar_default_plugins
- Liste der Standardplugins\sonar_install_optional_plugins
- sind optionale Plugins erforderlich
Standard: falsesonar_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 sindsonar_default_excluded_plugins
- Liste der Standardplugins, die Sie nicht benötigen
Standard: []sonar_web_user
- Benutzername für den Admin-Benutzer
Standard: adminsonar_web_password
- Passwort für den Admin-Benutzer
Standard: adminchange_password
- setzen Sie true, um das Passwort zu ändern
Standard: falsesonar_web_old_password
- aktuelles Passwort (vor der Änderung)
Standard: adminsonar_migrate_db
- ist eine DB-Migration erforderlich. Setzen Sie es auf true, wenn Sie eine bestehende SonarQube-Version auf eine neue Version aktualisieren.
Standard: falsesonar_set_jenkins_webhook
- ist die Konfiguration des Jenkins-WebHooks erforderlich
Standard: falsesonar_jenkins_webhook_name
- Name des Jenkins-WebHooks
Standard: jenkinssonar_jenkins_webhook_url
- URL des Jenkins-WebHooks
Standard: https://jenkins.example.com/sonarqube-webhook/sonar_restore_profiles
- ist eine Wiederherstellung der Profile erforderlich
Standard: falsesonar_profile_list
- Liste der wiederherzustellenden Profilesonar_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: undefiniertauthenticator_downcase
Standard: falseurl
Standard: ldap://myserver.mycompany.combind_dn
Standard: my_bind_dnbind_password
Standard: my_bind_passwordauthentication
Standard: einfachrealm
Standard:contextFactoryClass
Standard: com.sun.jndi.ldap.LdapCtxFactoryStartTLS
Standard: falsefollowReferrals
Standard: trueuser_base_dn
Standard : ou=Users,dc=mycompany,dc=comuser_request
Standard: (&(objectClass=inetOrgPerson)(uid={login}))user_real_name_attribute
Standard: cnuser_email_attribute
Standard: mailgroup_base_dn
Standard: ou=Groups,dc=sonarsource,dc=comgroup_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:
- Lean Delivery Team team@lean-delivery.com
Lean Delivery SonarQube server install
ansible-galaxy install lean_delivery.sonarqube