sonarqube
Роль SonarQube
Эта роль устанавливает 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 - пока не протестировано, должно работать
- CentOS, RHEL
Java, база данных и веб-сервер с самоподписанным сертификатом должны быть предварительно установлены. Используйте следующие роли galaxy:
- lean_delivery.java
- geerlingguy.postgresql
- jdauphant.ssl-certs
- nginxinc.nginx
Переменные роли
sonar_version
- версия SonarQubesonar_path
- каталог установки
по умолчанию: /opt/sonarqubesonar_user
- пользователь для установки SonarQube
по умолчанию: sonarsonar_group
- группа пользователя SonarQube
по умолчанию: sonarsonar_nofile
- количество файловых дескрипторов, которые пользователь, запускающий SonarQube, может открыть
по умолчанию: 65536sonar_nproc
- количество потоков, которые пользователь, запускающий SonarQube, может открыть
по умолчанию: 4096sonar_max_map_count
- лимит количества mmap, необходимый для Elasticsearch
по умолчанию: 262144sonar_log_level
- уровень логирования сервера SonarQube
по умолчанию: INFOsonar_java_opts
:web
- дополнительные параметры java для веб-части SonarQube
по умолчанию: -Xmx512m -Xms128mes
- дополнительные параметры java для Elasticsearch
по умолчанию: -Xms512m -Xmx512mce
- дополнительные параметры java для Compute Engine
по умолчанию: -Xmx512m -Xms128m
web
:host
- IP-адрес, на который привязана SonarQube
по умолчанию: 0.0.0.0port
- TCP-порт для входящих HTTP-соединений
по умолчанию: 9000path
- веб-контекст
по умолчанию: /
sonar_db
- настройки базы данныхtype
по умолчанию : postgresqlport
по умолчанию : 5432host
по умолчанию : localhostname
по умолчанию: sonaruser
по умолчанию: sonarpassword
по умолчанию: sonaroptions
по умолчанию:
sonar_store
- источник артефактов sonarqube
по умолчанию: https://sonarsource.bintray.com/Distribution/sonarqubesonar_check_url
- URL для проверки запуска SonarQube
по умолчанию: http://{{ web.host }}:{{ web.port }}sonar_download
- требуется ли загрузка sonarqube.zip. Установите значение false, когда загрузка zip невозможна, и поместите zip в sonar_download_path вручную перед запуском плейбука. по умолчанию: truesonar_download_path
- локальный путь для загрузки
по умолчанию: /tmp/sonar_proxy_type
- веб-сервер, на данный момент поддерживается только nginx
по умолчанию: nginxsonar_proxy_server_name
- имя сервера в конфигурации веб-сервера
по умолчанию: '{{ ansible_fqdn }}'sonar_proxy_http
- разрешено ли http-соединение
по умолчанию: falsesonar_proxy_http_port
- http-порт
по умолчанию: 80sonar_proxy_ssl
- разрешено ли https-соединение
по умолчанию: truesonar_proxy_ssl_port
- https-порт
по умолчанию: 443sonar_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
- настройка максимального размера тела клиента в конфигурации веб-сервера
по умолчанию: 32msonar_install_recommended_plugins
- требуются ли рекомендуемые плагины
по умолчанию: truesonar_recommended_plugins
- список рекомендуемых плагинов\sonar_update_default_plugins
- требуется ли обновление плагинов по умолчанию
по умолчанию: truesonar_default_plugins
- список плагинов по умолчанию\sonar_install_optional_plugins
- требуются ли дополнительные плагины
по умолчанию: falsesonar_optional_plugins
- список дополнительных плагинов, выключенных по умолчанию. Не все из них поддерживаются в последних версиях SonarQube, поэтому выберите нужные и переопределите это свойство.sonar_excluded_plugins
- список старых плагинов, исключённых из установщика SonarQubesonar_default_excluded_plugins
- список плагинов по умолчанию, которые вам не нужны
по умолчанию: []sonar_web_user
- имя пользователя для администратора
по умолчанию: adminsonar_web_password
- пароль для администратора
по умолчанию: adminchange_password
- установите true, чтобы изменить пароль
по умолчанию: falsesonar_web_old_password
- текущий пароль (до изменения)
по умолчанию: adminsonar_migrate_db
- требуется ли миграция БД. Установите значение true при обновлении существующей версии SonarQube до новой.
по умолчанию: falsesonar_set_jenkins_webhook
- требуется ли конфигурация вебхука jenkins
по умолчанию: falsesonar_jenkins_webhook_name
- имя вебхука jenkins
по умолчанию: jenkinssonar_jenkins_webhook_url
- URL вебхука jenkins
по умолчанию: https://jenkins.example.com/sonarqube-webhook/sonar_restore_profiles
- требуется ли восстановление профилей
по умолчанию: falsesonar_profile_list
- список профилей для восстановленияsonar_updatecenter_activate
- активировать центр обновлений SonarQube
по умолчанию: true
Секция конфигурации LDAP. Смотрите https://docs.sonarqube.org/latest/instance-administration/delegated-auth/#header-6 для описания.
ldap
: по умолчанию: undefinedauthenticator_downcase
по умолчанию: falseurl
по умолчанию: ldap://myserver.mycompany.combind_dn
по умолчанию: my_bind_dnbind_password
по умолчанию: my_bind_passwordauthentication
по умолчанию: simplerealm
по умолчанию:contextFactoryClass
по умолчанию: com.sun.jndi.ldap.LdapCtxFactoryStartTLS
по умолчанию: falsefollowReferrals
по умолчанию: trueuser_base_dn
по умолчанию : ou=Users,dc=mycompany,dc=comuser_request
по умолчанию: (&(objectClass=inetOrgPerson)(uid={login}))user_real_name_attribute
по умолчанию: cnuser_email_attribute
по умолчанию: mailgroup_base_dn
по умолчанию: ou=Groups,dc=sonarsource,dc=comgroup_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 team@lean-delivery.com
Lean Delivery SonarQube server install
ansible-galaxy install lean-delivery/ansible-role-sonarqube