lean_delivery.sonarqube

Rôle SonarQube

Licence Galaxy Ansible Ansible

Ce rôle installe SonarQube avec un ensemble élargi de plugins. L'exemple de playbook ci-dessous utilise également openJDK, une base de données PostgreSQL et un serveur web nginx avec HTTPS activé.

Voir l'article ici : https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html

En plus des plugins par défaut, SonarQube peut installer les plugins recommandés suivants :

  • plugin 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

Vous pouvez également installer des plugins optionnels. Soyez prudent, certains d'entre eux ne sont pas pris en charge dans les dernières versions de SonarQube :

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

Voir la matrice des plugins ici : https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/

Ce rôle propose également quelques options de configuration :

  • possibilité de migrer la base de données lors de la mise à jour de SonarQube vers une nouvelle version
  • possibilité de définir un webhook Jenkins
  • possibilité de restaurer des profils personnalisés
  • configuration LDAP
  • possibilité de changer le mot de passe de l'utilisateur admin

Voir l'exemple de pipeline Jenkins ici : https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy

Exigences

  • Versions Ansible prises en charge :
    • 5 (2.12) - pas encore couvert par les tests, devrait fonctionner
    • 6 (2.13)
    • 7 (2.14)
  • Versions SonarQube prises en charge :
    • 7.9.6 version LTS précédente
    • 8.9.10 version LTS précédente
    • 9.9.6 LTS
    • 10.0 - 10.6
  • Java pris en charge :
    • 11
    • 17 (à utiliser pour SonarQube 9.9+)
  • Bases de données prises en charge :
    • PostgreSQL
    • MySQL (non recommandé)
    • H2 embarqué (pour tests uniquement)
  • Serveurs web pris en charge (proxy inverse pour HTTPS) :
    • nginx
  • Systèmes d'exploitation pris en charge :
    • CentOS, RHEL
      • 7
    • Ubuntu
      • 18.04
      • 20.04 - pas encore couvert par les tests, devrait fonctionner
      • 22.04 - pas encore couvert par les tests, devrait fonctionner

Java, base de données et serveur web avec certificat auto-signé doivent être préalablement installés. Utilisez les rôles galaxy suivants :

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

Variables du rôle

  • sonar_version - version de SonarQube
  • sonar_path - répertoire d'installation
    par défaut : /opt/sonarqube
  • sonar_user - utilisateur pour installer SonarQube
    par défaut : sonar
  • sonar_group - groupe de l'utilisateur SonarQube
    par défaut : sonar
  • sonar_nofile - nombre de descripteurs de fichiers que l'utilisateur exécutant SonarQube peut ouvrir
    par défaut : 65536
  • sonar_nproc - nombre de threads que l'utilisateur exécutant SonarQube peut ouvrir
    par défaut : 4096
  • sonar_max_map_count - limite des comptes mmap requise pour Elasticsearch
    par défaut : 262144
  • sonar_log_level - Niveau de journalisation du serveur SonarQube
    par défaut : INFO
  • sonar_java_opts:
    • web - options Java supplémentaires pour la partie web de SonarQube
      par défaut : -Xmx512m -Xms128m
    • es - options Java supplémentaires pour Elasticsearch
      par défaut : -Xms512m -Xmx512m
    • ce - options Java supplémentaires pour le moteur de calcul
      par défaut : -Xmx512m -Xms128m
  • web:
    • host - adresse ip de liaison SonarQube
      par défaut : 0.0.0.0
    • port - port TCP pour les connexions HTTP entrantes
      par défaut : 9000
    • path - contexte web
      par défaut : /
  • sonar_db - paramètres de la base de données
    • type
      par défaut : postgresql
    • port
      par défaut : 5432
    • host
      par défaut : localhost
    • name
      par défaut : sonar
    • user
      par défaut : sonar
    • password
      par défaut : sonar
    • options
      par défaut :
  • sonar_store - fournisseur d'artéfacts sonarqube
    par défaut : https://sonarsource.bintray.com/Distribution/sonarqube
  • sonar_check_url - url pour la vérification du démarrage de SonarQube
    par défaut : http://{{ web.host }}:{{ web.port }}
  • sonar_download - téléchargement de sonarqube.zip requis. Définir à faux si le téléchargement de zip n'est pas possible et mettre le zip sur sonar_download_path manuellement avant l'exécution du playbook. par défaut : true
  • sonar_download_path - chemin de téléchargement local
    par défaut : /tmp/
  • sonar_proxy_type - serveur web, nginx est le seul supporté pour l’instant
    par défaut : nginx
  • sonar_proxy_server_name - nom du serveur dans la configuration du serveur web
    par défaut : '{{ ansible_fqdn }}'
  • sonar_proxy_http - le connexion HTTP est-elle autorisée
    par défaut : false
  • sonar_proxy_http_port - port http
    par défaut : 80
  • sonar_proxy_ssl - la connexion HTTPS est-elle autorisée
    par défaut : true
  • sonar_proxy_ssl_port - port https
    par défaut : 443
  • sonar_proxy_ssl_cert_path - chemin vers le certificat
    par défaut : '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'
  • sonar_proxy_ssl_key_path - chemin vers la clé
    par défaut : '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'
  • sonar_proxy_client_max_body_size - paramètre de taille maximale du corps client dans la configuration du serveur web
    par défaut : 32m
  • sonar_install_recommended_plugins - les plugins recommandés sont-ils requis
    par défaut : true
  • sonar_recommended_plugins - liste des plugins recommandés\
  • sonar_update_default_plugins - la mise à jour est-elle requise pour les plugins par défaut
    par défaut : true
  • sonar_default_plugins - liste des plugins par défaut\
  • sonar_install_optional_plugins - les plugins optionnels sont-ils requis
    par défaut : false
  • sonar_optional_plugins - liste des plugins optionnels désactivés par défaut. Tous ne sont pas pris en charge dans les dernières versions de SonarQube, donc sélectionnez ceux dont vous avez besoin et remplacez cette propriété.
  • sonar_excluded_plugins - liste des anciens plugins exclus de l'installateur SonarQube
  • sonar_default_excluded_plugins - liste des plugins par défaut dont vous n'avez pas besoin
    par défaut : []
  • sonar_web_user - nom d'utilisateur pour l'utilisateur admin
    par défaut : admin
  • sonar_web_password - mot de passe pour l'utilisateur admin
    par défaut : admin
  • change_password - définir sur vrai pour changer le mot de passe
    par défaut : false
  • sonar_web_old_password - mot de passe actuel (avant le changement)
    par défaut : admin
  • sonar_migrate_db - migration de la base de données nécessaire ? Définir sur vrai lors de la mise à jour de SonarQube vers une nouvelle version.
    par défaut : false
  • sonar_set_jenkins_webhook - configuration du webhook Jenkins requise ?
    par défaut : false
  • sonar_jenkins_webhook_name - nom du webhook Jenkins
    par défaut : jenkins
  • sonar_jenkins_webhook_url - url du webhook Jenkins
    par défaut : https://jenkins.example.com/sonarqube-webhook/
  • sonar_restore_profiles - restauration des profils requise ?
    par défaut : false
  • sonar_profile_list - liste des profils à restaurer
  • sonar_updatecenter_activate - activer le centre de mise à jour SonarQube
    par défaut : true

Section de configuration LDAP. Voir https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 pour obtenir la description

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

Exemple de Playbook

---
- name: Installer SonarQube
  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  # à définir sur vrai si mise à jour de SonarQube vers une nouvelle version 
    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: installer la clé rpm
      rpm_key:
        state: present
        key: https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
      when: ansible_distribution == 'RedHat'
    - name: installer epel
      package:
        name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
        state: present
      when: ansible_distribution == 'RedHat'
    # supprimer le sonar précédemment installé pour éviter les conflits de plugins
    - name: supprimer sonar
      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: supprimer la configuration nginx par défaut
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
    - name: recharger nginx
      command: 'nginx -s reload'

Licence

Apache

Informations sur l'auteur

auteurs :

À propos du projet

Lean Delivery SonarQube server install

Installer
ansible-galaxy install lean_delivery.sonarqube
Licence
apache-2.0
Téléchargements
25.1k
Propriétaire
Simplify by using!