sonarqube

Роль SonarQube

Лицензия Galaxy Ansible Ansible

Эта роль устанавливает SonarQube с расширенным набором плагинов. Пример плейбука ниже также использует openJDK, базу данных PostgreSQL и веб-сервер nginx с включенным https.

Смотрите статью здесь: https://lean-delivery.com/2020/02/how-to-add-sonarqube-to-ci-process.html

В дополнение к плагинам по умолчанию, включённым в роль SonarQube, можно установить следующие рекомендуемые плагины:

  • 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

Также можно установить дополнительные плагины. Будьте внимательны, некоторые из них не поддерживаются в последних версиях SonarQube:

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

Смотрите матрицу плагинов здесь: https://docs.sonarsource.com/sonarqube/latest/instance-administration/plugin-version-matrix/

Эта роль также предоставляет некоторые параметры конфигурации:

  • возможность миграции БД при обновлении SonarQube до новой версии
  • возможность настройки вебхука Jenkins
  • возможность восстановить пользовательские профили
  • конфигурация LDAP
  • возможность смены пароля для администратора

Смотрите пример пайплайна Jenkins здесь: https://raw.githubusercontent.com/lean-delivery/ansible-role-sonarqube/master/files/example_pipeline.groovy

Требования

  • Поддерживаемые версии Ansible:
    • 5 (2.12) - пока не протестировано, должно работать
    • 6 (2.13)
    • 7 (2.14)
  • Поддерживаемые версии SonarQube:
    • 7.9.6 предыдущая LTS
    • 8.9.10 предыдущая LTS
    • 9.9.6 LTS
    • 10.0 - 10.6
  • Поддерживаемая Java:
    • 11
    • 17 (используйте для SonarQube 9.9+)
  • Поддерживаемые базы данных:
    • PostgreSQL
    • MySQL (не рекомендуется)
    • встроенная H2 (только для тестов)
  • Поддерживаемые веб-серверы (обратный прокси для https):
    • nginx
  • Поддерживаемые ОС:
    • CentOS, RHEL
      • 7
    • Ubuntu
      • 18.04
      • 20.04 - пока не протестировано, должно работать
      • 22.04 - пока не протестировано, должно работать

Java, база данных и веб-сервер с самоподписанным сертификатом должны быть предварительно установлены. Используйте следующие роли galaxy:

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

Переменные роли

  • sonar_version - версия SonarQube
  • sonar_path - каталог установки
    по умолчанию: /opt/sonarqube
  • sonar_user - пользователь для установки SonarQube
    по умолчанию: sonar
  • sonar_group - группа пользователя SonarQube
    по умолчанию: sonar
  • sonar_nofile - количество файловых дескрипторов, которые пользователь, запускающий SonarQube, может открыть
    по умолчанию: 65536
  • sonar_nproc - количество потоков, которые пользователь, запускающий SonarQube, может открыть
    по умолчанию: 4096
  • sonar_max_map_count - лимит количества mmap, необходимый для Elasticsearch
    по умолчанию: 262144
  • sonar_log_level - уровень логирования сервера SonarQube
    по умолчанию: INFO
  • sonar_java_opts:
    • web - дополнительные параметры java для веб-части SonarQube
      по умолчанию: -Xmx512m -Xms128m
    • es - дополнительные параметры java для Elasticsearch
      по умолчанию: -Xms512m -Xmx512m
    • ce - дополнительные параметры java для Compute Engine
      по умолчанию: -Xmx512m -Xms128m
  • web:
    • host - IP-адрес, на который привязана SonarQube
      по умолчанию: 0.0.0.0
    • port - TCP-порт для входящих HTTP-соединений
      по умолчанию: 9000
    • path - веб-контекст
      по умолчанию: /
  • sonar_db - настройки базы данных
    • type
      по умолчанию : postgresql
    • port
      по умолчанию : 5432
    • host
      по умолчанию : localhost
    • name
      по умолчанию: sonar
    • user
      по умолчанию: sonar
    • password
      по умолчанию: sonar
    • options
      по умолчанию:
  • sonar_store - источник артефактов sonarqube
    по умолчанию: https://sonarsource.bintray.com/Distribution/sonarqube
  • sonar_check_url - URL для проверки запуска SonarQube
    по умолчанию: http://{{ web.host }}:{{ web.port }}
  • sonar_download - требуется ли загрузка sonarqube.zip. Установите значение false, когда загрузка zip невозможна, и поместите zip в sonar_download_path вручную перед запуском плейбука. по умолчанию: true
  • sonar_download_path - локальный путь для загрузки
    по умолчанию: /tmp/
  • sonar_proxy_type - веб-сервер, на данный момент поддерживается только nginx
    по умолчанию: nginx
  • sonar_proxy_server_name - имя сервера в конфигурации веб-сервера
    по умолчанию: '{{ ansible_fqdn }}'
  • sonar_proxy_http - разрешено ли http-соединение
    по умолчанию: false
  • sonar_proxy_http_port - http-порт
    по умолчанию: 80
  • sonar_proxy_ssl - разрешено ли https-соединение
    по умолчанию: true
  • sonar_proxy_ssl_port - https-порт
    по умолчанию: 443
  • sonar_proxy_ssl_cert_path - путь к сертификату
    по умолчанию: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.pem'
  • sonar_proxy_ssl_key_path - путь к ключу
    по умолчанию: '/etc/ssl/{{ sonar_proxy_server_name }}/{{ sonar_proxy_server_name }}.key'
  • sonar_proxy_client_max_body_size - настройка максимального размера тела клиента в конфигурации веб-сервера
    по умолчанию: 32m
  • sonar_install_recommended_plugins - требуются ли рекомендуемые плагины
    по умолчанию: true
  • sonar_recommended_plugins - список рекомендуемых плагинов\
  • sonar_update_default_plugins - требуется ли обновление плагинов по умолчанию
    по умолчанию: true
  • sonar_default_plugins - список плагинов по умолчанию\
  • sonar_install_optional_plugins - требуются ли дополнительные плагины
    по умолчанию: false
  • sonar_optional_plugins - список дополнительных плагинов, выключенных по умолчанию. Не все из них поддерживаются в последних версиях SonarQube, поэтому выберите нужные и переопределите это свойство.
  • sonar_excluded_plugins - список старых плагинов, исключённых из установщика SonarQube
  • sonar_default_excluded_plugins - список плагинов по умолчанию, которые вам не нужны
    по умолчанию: []
  • sonar_web_user - имя пользователя для администратора
    по умолчанию: admin
  • sonar_web_password - пароль для администратора
    по умолчанию: admin
  • change_password - установите true, чтобы изменить пароль
    по умолчанию: false
  • sonar_web_old_password - текущий пароль (до изменения)
    по умолчанию: admin
  • sonar_migrate_db - требуется ли миграция БД. Установите значение true при обновлении существующей версии SonarQube до новой.
    по умолчанию: false
  • sonar_set_jenkins_webhook - требуется ли конфигурация вебхука jenkins
    по умолчанию: false
  • sonar_jenkins_webhook_name - имя вебхука jenkins
    по умолчанию: jenkins
  • sonar_jenkins_webhook_url - URL вебхука jenkins
    по умолчанию: https://jenkins.example.com/sonarqube-webhook/
  • sonar_restore_profiles - требуется ли восстановление профилей
    по умолчанию: false
  • sonar_profile_list - список профилей для восстановления
  • sonar_updatecenter_activate - активировать центр обновлений SonarQube
    по умолчанию: true

Секция конфигурации LDAP. Смотрите https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 для описания.

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

Пример плейбука

---
- name: Установка 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: ваш_новый_безопасный_пароль
    change_password: true
    sonar_web_old_password: admin
    sonar_migrate_db: false  # установите true, если обновляете SonarQube до новой версии 
    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 ключа
      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
      package:
        name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm
        state: present
      when: ansible_distribution == 'RedHat'
    # удаление ранее установленного sonar, чтобы избежать конфликтов плагинов
    - name: удаление 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: удаление конфигурации по умолчанию nginx
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent
    - name: перезагрузка nginx
      command: 'nginx -s reload'

Лицензия

Apache

Информация об авторе

авторы:

О проекте

Lean Delivery SonarQube server install

Установить
ansible-galaxy install lean-delivery/ansible-role-sonarqube
Лицензия
apache-2.0
Загрузки
20944
Владелец
Simplify by using!