sonarqube

Ansible Роль: SonarQube (lrk.sonarqube)

Molecule Galaxy Ansible Ansible Ansible

Ansible роль, которая устанавливает SonarQube.

Поддерживаемые ОС

Эта роль была протестирована на следующих операционных системах:

  • EL - 7
  • Debian - Stretch

Требования

Требования SonarQube:

  • 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

  1. Установите Vagrant и VirtualBox.
  2. Инициализируйте виртуальное окружение и настройте зависимости, например:
python -m venv ~/.virtualenvs/molecule
. ~/.virtualenvs/molecule/bin/activate
pip install -r molecule/vagrant/requirements.txt
  1. Запустите тесты (по умолчанию используется CentOS):
molecule test -s vagrant
  1. (по желанию) Запустите тесты для другой ОС (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

Обновление

Пожалуйста, сначала протестируйте обновление в тестовой среде.

Процесс состоит из следующих шагов:

  1. Измените переменную sonar_version
  2. Проверьте переменную sonar_plugins в соответствии с https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/
  3. Запустите роль над существующей установкой. Ansible:
  • создаст папку установки
  • поместит бинарные файлы новой версии SonarQube с плагинами
  • остановит текущую работающую службу
  • обновит конфигурации
  • снова запустит службу
  • обеспечит запуск веб-службы и появление номера версии SonarQube в web.log
  • убедится, что работающая версия Sonar соответствует ожидаемой
  1. Затем вы должны открыть http://yourSonarQubeServerURL/setup и следовать инструкциям по настройке, как описано в https://docs.sonarqube.org/latest/setup/upgrading/ (вывод роли оставит напоминание об этом).

Пожалуйста, обратите внимание:

  • роль не создает резервную копию базы данных
  • роль не сравнивает версии. Пожалуйста, избегайте случайного понижения версии
  • роль не удаляет папку с предыдущей установкой, поэтому после обновления путь, указанный в переменной sonar_install_directory, будет содержать более одной sonar_base_dir

Лицензия

Лицензия Apache версия 2.0

Ссылки

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

Эта роль была создана Lrk.

О проекте

An Ansible Role that install SonarQube.

Установить
ansible-galaxy install lrk/ansible-role-sonarqube
Лицензия
apache-2.0
Загрузки
101975
Владелец