sonarqube
Ansible Роль: SonarQube (lrk.sonarqube)
Ansible роль, которая устанавливает SonarQube.
Поддерживаемые ОС
Эта роль была протестирована на следующих операционных системах:
- EL - 7
- Debian - Stretch
Требования
- Oracle JRE 11 и выше или OpenJDK 11 и выше должны быть установлены на вашем компьютере.
Для производственной среды убедитесь, что переменная sonar_db_embedded
установлена в false и выполнена настройка переменных sonar_db_*.
SonarQube поддерживает следующие базы данных: MySQL, Oracle, PostgreSQL и Microsoft SQLServer.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с требованиями SonarQube.
Установка плагинов SonarQube
Эта роль поддерживает установку плагинов в соответствии с процедурой "Установка плагина SonarQube". Поддерживаются как методы из маркетплейса, так и ручные методы.
Обратите внимание, что эта роль не обрабатывает ранее установленные плагины. Вы должны удалить предыдущие версии самостоятельно.
Чтобы установить плагины, перечислите их в словаре sonar_plugins
, доступны следующие параметры:
name
: название плагина, для плагинов из маркетплейса это должно быть название манифеста плагина (json) здесь, для ручных плагинов это может быть название папки плагина здесь или предоставьте параметрurl
(см. ниже);version
: версия плагина;commercial
: является ли этот плагин коммерческим (другое место для загрузки, на самом деле), имеет смысл только для ручных плагинов;url
: ссылка на jar файл плагина, если указана, роль не пытается найти плагин и использует эту ссылку, не имеет смысла для плагинов из маркетплейса, так как URL для загрузки должен быть указан в манифесте;marketplace
: является ли это ручным или маркетплейсовым плагином, по умолчанию false.
Пример:
sonar_plugins:
- name: "sonar-city-model-plugin"
version: "3.3"
commercial: true
url: "http://www.qalitax.com/descargas/product/sonar-city-model-plugin-3.3.jar?customerSurnames=update-center&customerCompany=sonar-update-center&customerName=sonarqube&[email protected]"
- name: "ansible"
version: "2.4.0"
marketplace: true
Как протестировать локально с помощью vagrant
- Установите Vagrant и VirtualBox.
- Инициализируйте виртуальное окружение и настройте зависимости, например:
python -m venv ~/.virtualenvs/molecule
. ~/.virtualenvs/molecule/bin/activate
pip install -r molecule/vagrant/requirements.txt
- Запустите тесты (по умолчанию используется CentOS):
molecule test -s vagrant
- (по желанию) Запустите тесты для другой ОС (ubuntu в данном случае):
MOLECULE_DISTRO=ubuntu/trusty64 molecule test -s vagrant
Переменные роли
Доступные переменные вместе с значениями по умолчанию перечислены ниже (см. defaults/main.yml
):
---
---
# файл по умолчанию для ansible-role-sonarqube/
# Директория установки SonarQube
sonar_install_directory: /opt/sonarqube
# Базовая директория SonarQube
sonar_base_dir: "{{ sonar_install_directory }}/sonarqube-{{ sonar_version }}"
# Директория демона SonarQube
sonar_daemon_dir: "{{ sonar_base_dir }}/bin/linux-x86-{{ ansible_userspace_bits }}"
# Директория конфигурации SonarQube
sonar_conf_dir: "{{ sonar_base_dir }}/conf"
sonar_logs_dir: "/var/log/sonarqube"
# Пути к постоянным файлам данных (встроенная база данных и индекс поиска)
sonar_data_dir: "{{ sonar_base_dir }}/data"
# Пути к временным файлам
sonar_temp_dir: "{{ sonar_base_dir }}/temp"
# Версия SonarQube для установки
sonar_version: 5.6.7
# Системная группа SonarQube
sonar_group: sonar
# Системный пользователь SonarQube
sonar_user: sonar
# Параметр LimitNOFILE службы SonarQube
sonar_limitnofile: 65536
# Плагины SonarQube для установки (см. подробное описание выше)
sonar_plugins: []
# Использовать встроенную базу данных H2, не для производственной среды
sonar_db_embedded: true
sonar_db_embedded_port: 9092
# Учетные данные JDBC SonarQube
sonar_db_user: ""
sonar_db_pass: ""
# URL JDBC SonarQube
sonar_jdbc_url: ""
# Максимальное количество активных соединений JDBC
sonar_jdbc_maxactive: 60
# Максимальное количество соединений, которые могут оставаться без дела в пулах,
# без освобождения лишних, или отрицательное для отсутствия ограничения.
sonar_jdbc_maxidle: 5
# Минимальное количество соединений, которые могут оставаться без дела в пулах,
# без создания дополнительных, или ноль, чтобы не создать ни одного.
sonar_jdbc_minidle: 2
# Максимальное количество миллисекунд, которое пул будет ожидать (когда нет доступных соединений)
# для возвращения соединения перед выбрасыванием исключения, или <= 0 для ожидания бесконечно.
sonar_jdbc_maxwait: 5000
# Конфигурация веб-сервера SonarQube
sonar_web_java_opts: ""
# Привязка IP адреса. Для серверов с несколькими IP-адресами это свойство указывает, какой
# адрес будет использован для прослушивания на указанных портах.
sonar_web_host: 0.0.0.0
# TCP порт для входящих HTTP соединений. Значение по умолчанию 9000.
sonar_web_port: 9000
#--------------------------------------------------------------------------------------------------
# ФОНД РАБОТЫ
# Фонд работы отвечает за выполнение фоновых задач.
# Основан на выделенном Java-процессе.
sonar_ce_java_opts: ""
# Количество рабочих в фоновой вычислительной системе.
sonar_ce_worker_count: 1
#--------------------------------------------------------------------------------------------------
# ЭЛАСТИЧЕСКИЙ ПОИСК
# Elasticsearch используется для быстрого и точного поиска информации.
sonar_search_java_opts: "-Xmx1G -Xms256m -Xss1m -Djava.net.preferIPv4Stack=true"
# Elasticsearch порт. По умолчанию 9001. Используйте 0, чтобы получить свободный порт.
sonar_search_port: 9001
#--------------------------------------------------------------------------------------------------
# ЦЕНТР ОБНОВЛЕНИЙ
sonar_updatecenter_activate: true
#--------------------------------------------------------------------------------------------------
# ЖУРНАЛИРОВАНИЕ
sonar_log_level: "INFO"
#--------------------------------------------------------------------------------------------------
# ДРУГИЕ
sonar_notifications_delay: 60
#--------------------------------------------------------------------------------------------------
# ПЕРЕПИСАТЬ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ
sonar_download_url: "https://your_url"
sonar_plugin_baseurl: "https://your_url"
sonar_commercial_plugin_baseurl: "https://your_url"
Зависимости
Нет прямых зависимостей. Сначала должен быть установлен JDK.
Пример плейбука
- hosts: servers
pre_tasks:
- name: Установить зависимости пакетов.
package:
name: "{{ item }}"
state: "present"
with_items:
- unzip
roles:
- lrk.sonarqube
Обновление
Пожалуйста, сначала протестируйте обновление в тестовой среде.
Процесс состоит из следующих шагов:
- Измените переменную
sonar_version
- Проверьте переменную
sonar_plugins
в соответствии с https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/ - Запустите роль над существующей установкой. Ansible:
- создаст папку установки
- поместит бинарные файлы новой версии SonarQube с плагинами
- остановит текущую работающую службу
- обновит конфигурации
- снова запустит службу
- обеспечит запуск веб-службы и появление номера версии SonarQube в web.log
- убедится, что работающая версия Sonar соответствует ожидаемой
- Затем вы должны открыть http://yourSonarQubeServerURL/setup и следовать инструкциям по настройке, как описано в https://docs.sonarqube.org/latest/setup/upgrading/ (вывод роли оставит напоминание об этом).
Пожалуйста, обратите внимание:
- роль не создает резервную копию базы данных
- роль не сравнивает версии. Пожалуйста, избегайте случайного понижения версии
- роль не удаляет папку с предыдущей установкой, поэтому после обновления путь, указанный в переменной
sonar_install_directory
, будет содержать более однойsonar_base_dir
Лицензия
Лицензия Apache версия 2.0
Ссылки
Информация об авторе
Эта роль была создана Lrk.
ansible-galaxy install lrk/ansible-role-sonarqube