lrk.sonarqube

Rol de Ansible: SonarQube (lrk.sonarqube)

Molecule Galaxy Ansible Ansible Ansible

Un Rol de Ansible que instala SonarQube.

Sistemas Operativos Soportados

Este rol ha sido probado en los siguientes sistemas operativos:

  • EL - 7
  • Debian - Stretch

Requisitos

Los requisitos de SonarQube son:

  • Oracle JRE 11 en adelante o OpenJDK 11 en adelante instalado en tu máquina.

Para entornos de producción, asegúrate de establecer la variable sonar_db_embedded en falso y configurar las variables sonar_db_*.

SonarQube admite las siguientes bases de datos: MySQL, Oracle, PostgreSQL y Microsoft SQLServer.

Para más información, consulta los requisitos de SonarQube.

Instalación de plugins de SonarQube

Este rol soporta la instalación de plugins basado en el procedimiento "Instalación de un Plugin de SonarQube". Se admiten tanto métodos de mercado como manuales.

Ten en cuenta que este rol no maneja plugins instalados anteriormente. Debes eliminar las versiones anteriores tú mismo.

Para instalar plugins, enuméralos en el diccionario sonar_plugins, las siguientes opciones están disponibles:

  • name: nombre del plugin, para plugins de mercado debe ser el nombre del manifiesto (json) del plugin aquí, para plugins manuales puede ser el nombre de la carpeta del plugin aquí o proporcionar la opción url (ver abajo);
  • version: versión del plugin;
  • commercial: es este un plugin comercial (una ubicación de descarga diferente, en realidad), solo tiene sentido para plugins manuales;
  • url: enlace al jar del plugin, si se proporciona, el rol no intentará buscar el plugin y usará este enlace, no tiene sentido para plugins de mercado porque la URL de descarga debe proporcionarse en el manifiesto;
  • marketplace: ¿es este un plugin manual o de mercado?, por defecto es falso.

Ejemplo:

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

Cómo probar localmente con Vagrant

  1. Instala Vagrant y VirtualBox.
  2. Inicializa virtualenv y configura los requisitos, por ejemplo:
python -m venv ~/.virtualenvs/molecule
. ~/.virtualenvs/molecule/bin/activate
pip install -r molecule/vagrant/requirements.txt
  1. Ejecuta pruebas (se usa la caja CentOS por defecto):
molecule test -s vagrant
  1. (opcional) Ejecuta pruebas para otro SO (ubuntu en este caso):
MOLECULE_DISTRO=ubuntu/trusty64 molecule test -s vagrant

Variables del Rol

Las variables disponibles junto con sus valores predeterminados se enumeran a continuación (ver defaults/main.yml)

---
  ---
  # archivo de valores predeterminados para ansible-role-sonarqube/

  # Directorio de instalación de SonarQube
  sonar_install_directory: /opt/sonarqube

  # Directorio base de SonarQube
  sonar_base_dir: "{{ sonar_install_directory }}/sonarqube-{{ sonar_version }}"

  # Directorio del daemon de SonarQube
  sonar_daemon_dir: "{{ sonar_base_dir }}/bin/linux-x86-{{ ansible_userspace_bits }}"

  # Directorio de conf de SonarQube
  sonar_conf_dir: "{{ sonar_base_dir }}/conf"

  sonar_logs_dir: "/var/log/sonarqube"

  # Rutas a archivos de datos persistentes (base de datos embebida e índice de búsqueda)
  sonar_data_dir: "{{ sonar_base_dir }}/data"

  # Rutas a archivos temporales
  sonar_temp_dir: "{{ sonar_base_dir }}/temp"

  # Versión de SonarQube a instalar
  sonar_version: 5.6.7

  # Grupo del sistema de SonarQube
  sonar_group: sonar

  # Usuario del sistema de SonarQube
  sonar_user: sonar

  # Parámetro LimitNOFILE del servicio de SonarQube
  sonar_limitnofile: 65536

  # Plugins de SonarQube a instalar (ver descripción detallada arriba)
  sonar_plugins: []

  # Usa la base de datos H2 embebida, no para entornos de producción
  sonar_db_embedded: true
  sonar_db_embedded_port: 9092

  # Credenciales JDBC de SonarQube
  sonar_db_user: ""
  sonar_db_pass: ""

  # URL JDBC de SonarQube
  sonar_jdbc_url: ""

  # Número máximo de conexiones activas JDBC de SonarQube
  sonar_jdbc_maxactive: 60

  # Número máximo de conexiones que pueden permanecer inactivas
  sonar_jdbc_maxidle: 5

  # Número mínimo de conexiones que pueden permanecer inactivas
  sonar_jdbc_minidle: 2

  # Número máximo de milisegundos que la piscina esperará por una conexión
  sonar_jdbc_maxwait: 5000

  # Configuración del Servidor Web de SonarQube
  sonar_web_java_opts: ""

  # Dirección IP de enlace
  sonar_web_host: 0.0.0.0

  # Puerto TCP para conexiones HTTP
  sonar_web_port: 9000

  # Otros parámetros de configuración...

Dependencias

No hay dependencias directas. El JDK debe instalarse primero.

Ejemplo de Playbook

  - hosts: servers
    pre_tasks:
      - name: Instalar dependencias de paquetes.
        package:
          name: "{{ item }}"
          state: "present"
        with_items:
          - unzip
    roles:
      - lrk.sonarqube

Actualización

Por favor, prueba la actualización primero en un entorno de staging.

El proceso consiste en los siguientes pasos:

  1. Cambiar la variable sonar_version.
  2. Revisar la variable sonar_plugins de acuerdo con https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/
  3. Ejecutar el rol sobre la instalación existente. Ansible:
  • creará la carpeta de instalación
  • colocará aquí los binarios de SonarQube nuevos con plugins
  • detendrá el servicio que se está ejecutando actualmente
  • actualizará las configuraciones
  • reiniciará el servicio
  • asegurará que el servicio web se haya iniciado y que el número de versión de SonarQube aparezca en web.log
  • asegurará que la versión de Sonar que se está ejecutando corresponde a la esperada.
  1. Luego necesitas abrir http://yourSonarQubeServerURL/setup y seguir las instrucciones de configuración como se describe en https://docs.sonarqube.org/latest/setup/upgrading/ (la salida del rol dejará un recordatorio para esto).

Por favor, ten en cuenta:

  • el rol no hace copias de seguridad de la base de datos.
  • el rol no compara las versiones. Por favor, evita hacer un downgrade por error.
  • el rol no elimina la carpeta con la instalación anterior, por lo que después de la actualización, la ruta especificada en la variable sonar_install_directory contendrá más de un sonar_base_dir.

Licencia

Licencia Apache Versión 2.0

Referencias

Información del Autor

Este rol fue creado por Lrk.

Acerca del proyecto

An Ansible Role that install SonarQube.

Instalar
ansible-galaxy install lrk.sonarqube
Licencia
apache-2.0
Descargas
103.5k
Propietario