lean_delivery.sonarqube

rol de sonarqube

Licencia Galaxy Ansible Ansible

Este rol instala SonarQube con un conjunto ampliado de plugins. El ejemplo del playbook a continuación también utiliza openJDK, una base de datos postgreSQL y un servidor web nginx con https habilitado.

Consulta el artículo aquí: https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html

Además de los plugins predeterminados incluidos en SonarQube, este rol puede instalar los siguientes plugins recomendados:

  • 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

También puedes instalar plugins opcionales. Ten cuidado, algunos de ellos no son compatibles con las versiones más recientes de SonarQube:

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

Consulta la matriz de plugins aquí: https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/

Este rol también proporciona algunas opciones de configuración:

  • capacidad de migrar la base de datos al actualizar SonarQube a una nueva versión
  • capacidad de establecer un webhook de Jenkins
  • capacidad de restaurar perfiles personalizados
  • configuración LDAP
  • capacidad de cambiar la contraseña del usuario administrador

Consulta el ejemplo de pipeline de Jenkins aquí: https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy

Requisitos

  • Versiones de Ansible compatibles:
    • 5 (2.12) - no cubierto por pruebas aún, debería funcionar
    • 6 (2.13)
    • 7 (2.14)
  • Versiones de SonarQube compatibles:
    • 7.9.6 LTS anterior
    • 8.9.10 LTS anterior
    • 9.9.6 LTS
    • 10.0 - 10.6
  • Java compatible:
    • 11
    • 17 (usar para SonarQube 9.9+)
  • Bases de datos compatibles:
    • PostgreSQL
    • MySQL (no recomendado)
    • H2 embebido (solo para pruebas)
  • Servidores web compatibles (proxy inverso para https):
    • nginx
  • Sistemas operativos compatibles:
    • CentOS, RHEL
      • 7
    • Ubuntu
      • 18.04
      • 20.04 - no cubierto por pruebas aún, debería funcionar
      • 22.04 - no cubierto por pruebas aún, debería funcionar

Java, base de datos y servidor web con certificado autofirmado deben estar instalados previamente. Usa los siguientes roles de galaxy:

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

Variables del rol

  • sonar_version - versión de SonarQube
  • sonar_path - directorio de instalación
    por defecto: /opt/sonarqube
  • sonar_user - usuario para instalar SonarQube
    por defecto: sonar
  • sonar_group - grupo del usuario de SonarQube
    por defecto: sonar
  • sonar_nofile - cantidad de descriptores de archivo que el usuario que ejecuta SonarQube puede abrir
    por defecto: 65536
  • sonar_nproc - cantidad de hilos que el usuario que ejecuta SonarQube puede abrir
    por defecto: 4096
  • sonar_max_map_count - límite de conteo de mmap requerido para Elasticsearch
    por defecto: 262144
  • sonar_log_level - nivel de registro del servidor SonarQube
    por defecto: INFO
  • sonar_java_opts:
    • web - opciones adicionales de java para la parte web de SonarQube
      por defecto: -Xmx512m -Xms128m
    • es - opciones adicionales de java para Elasticsearch
      por defecto: -Xms512m -Xmx512m
    • ce - opciones adicionales de java para Compute Engine
      por defecto: -Xmx512m -Xms128m
  • web:
    • host - dirección IP de enlace de SonarQube
      por defecto: 0.0.0.0
    • port - puerto TCP para conexiones HTTP entrantes
      por defecto: 9000
    • path - contexto web
      por defecto: /
  • sonar_db - configuraciones de base de datos
    • type
      por defecto : postgresql
    • port
      por defecto : 5432
    • host
      por defecto : localhost
    • name
      por defecto: sonar
    • user
      por defecto: sonar
    • password
      por defecto: sonar
    • options
      por defecto:
  • sonar_store - proveedor de artefactos de sonarqube
    por defecto: https://sonarsource.bintray.com/Distribution/sonarqube
  • sonar_check_url - url para la verificación de inicio de SonarQube
    por defecto: http://{{ web.host }}:{{ web.port }}
  • sonar_download - si se requiere descarga de sonarqube.zip. Establecer en falso cuando no sea posible descargar el zip y poner el zip en sonar_download_path manualmente antes de ejecutar el playbook. por defecto: true
  • sonar_download_path - ruta de descarga local
    por defecto: /tmp/
  • sonar_proxy_type - servidor web, sólo nginx es compatible por ahora
    por defecto: nginx
  • sonar_proxy_server_name - nombre del servidor en la configuración del servidor web
    por defecto: '{{ ansible_fqdn }}'
  • sonar_proxy_http - si se permite la conexión http
    por defecto: false
  • sonar_proxy_http_port - puerto http
    por defecto: 80
  • sonar_proxy_ssl - si se permite la conexión https
    por defecto: true
  • sonar_proxy_ssl_port - puerto https
    por defecto: 443
  • sonar_proxy_ssl_cert_path - ruta al certificado
    por defecto: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'
  • sonar_proxy_ssl_key_path - ruta a la clave
    por defecto: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'
  • sonar_proxy_client_max_body_size - configuración de tamaño máximo del cuerpo del cliente en la configuración del servidor web
    por defecto: 32m
  • sonar_install_recommended_plugins - si se requieren plugins recomendados
    por defecto: true
  • sonar_recommended_plugins - lista de plugins recomendados\
  • sonar_update_default_plugins - si se requiere actualización de plugins predeterminados
    por defecto: true
  • sonar_default_plugins - lista de plugins predeterminados\
  • sonar_install_optional_plugins - si se requieren plugins opcionales
    por defecto: false
  • sonar_optional_plugins - lista de plugins opcionales desactivados por defecto. No todos son compatibles con las versiones más recientes de SonarQube, así que selecciona los que necesites y sobrescribe esta propiedad.
  • sonar_excluded_plugins - lista de plugins antiguos excluidos del instalador de SonarQube
  • sonar_default_excluded_plugins - lista de plugins predeterminados que no necesitas
    por defecto: []
  • sonar_web_user - nombre de usuario para el usuario administrador
    por defecto: admin
  • sonar_web_password - contraseña para el usuario administrador
    por defecto: admin
  • change_password - establecer verdadero para cambiar la contraseña
    por defecto: false
  • sonar_web_old_password - contraseña actual (antes de cambiar)
    por defecto: admin
  • sonar_migrate_db - si se requiere migración de la base de datos. Establecer en verdadero al actualizar SonarQube a una nueva versión.
    por defecto: false
  • sonar_set_jenkins_webhook - si se requiere configuración de webhook de Jenkins
    por defecto: false
  • sonar_jenkins_webhook_name - nombre del webhook de jenkins
    por defecto: jenkins
  • sonar_jenkins_webhook_url - url del webhook de jenkins
    por defecto: https://jenkins.example.com/sonarqube-webhook/
  • sonar_restore_profiles - si se requiere restaurar perfiles
    por defecto: false
  • sonar_profile_list - lista de perfiles a restaurar
  • sonar_updatecenter_activate - activar el centro de actualizaciones de SonarQube por defecto: true

Sección de configuración de LDAP. Consulta https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 para obtener una descripción

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

Ejemplo de Playbook

---
- nombre: Instalar 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: tu_nueva_contraseña_segura
    change_password: true
    sonar_web_old_password: admin
    sonar_migrate_db: false  # establecer en true si actualizas SonarQube a una nueva versión 
    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:
    - nombre: instalar clave rpm
      rpm_key:
        state: present
        key: https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}
      when: ansible_distribution == 'RedHat'
    - nombre: instalar epel
      package:
        name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
        state: present
      when: ansible_distribution == 'RedHat'
    # eliminar sonar previamente instalado para prevenir conflictos de plugins
    - nombre: eliminar 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:
    - nombre: eliminar configuración predeterminada de nginx
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
    - nombre: reiniciar nginx
      command: 'nginx -s reload'

Licencia

Apache

Información del autor

autores:

Acerca del proyecto

Lean Delivery SonarQube server install

Instalar
ansible-galaxy install lean_delivery.sonarqube
Licencia
apache-2.0
Descargas
25.1k
Propietario
Simplify by using!