lrk.sonarqube

Ansible 角色:SonarQube (lrk.sonarqube)

Molecule Galaxy Ansible Ansible Ansible

一个安装 SonarQube 的 Ansible 角色。

支持的操作系统

该角色已在以下操作系统上进行测试:

  • 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 文件链接,如果提供,角色将使用此链接,而不是尝试查找插件;对于市场插件不适用,因为下载链接应在清单中提供;
  • 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. 安装 VagrantVirtualBox
  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

  # SonarQube 服务 LimitNOFILE 参数
  sonar_limitnofile: 65536

  # 要安装的 SonarQube 插件(见上文详细说明)
  sonar_plugins: []

  # 使用嵌入式 H2 数据库,不适用于生产环境
  sonar_db_embedded: true
  sonar_db_embedded_port: 9092

  # SonarQube JDBC 凭据
  sonar_db_user: ""
  sonar_db_pass: ""

  # SonarQube JDBC URL
  sonar_jdbc_url: ""

  # SonarQube JDBC 最大活动连接数
  sonar_jdbc_maxactive: 60

  # 可以保持空闲的最大连接数
  sonar_jdbc_maxidle: 5

  # 可以保持空闲的最小连接数
  sonar_jdbc_minidle: 2

  # 连接池等待可用连接的最大毫秒数
  sonar_jdbc_maxwait: 5000

  sonar_jdbc_min_evictable_idle_time_millis: 600000
  sonar_jdbc_time_between_eviction_runs_millis: 30000

  # SonarQube Web 服务器配置
  sonar_web_java_opts: ""

  # 绑定 IP 地址。用于具有多个 IP 地址的服务器
  sonar_web_host: 0.0.0.0

  # TCP 端口用于接收 HTTP 连接。默认值为 9000。
  sonar_web_port: 9000

  # TCP 端口用于接收 AJP 连接。禁用时值为 -1。默认情况下禁用。
  sonar_ajp_port: -1

依赖关系

没有直接依赖关系。JDK 应先安装。

示例 Playbook

  - hosts: servers
    pre_tasks:
      - name: 安装包依赖。
        package:
          name: "{{ item }}"
          state: "present"
        with_items:
          - unzip
    roles:
      - lrk.sonarqube

升级

请先在预发布环境中测试升级。

过程包括以下步骤:

  1. 更改变量 sonar_version
  2. 根据 https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/ 审查变量 sonar_plugins
  3. 在现有安装上运行该角色。Ansible 将:
  • 创建安装文件夹
  • 将新 SonarQube 的二进制文件和插件放入此处
  • 停止当前正在运行的服务
  • 更新配置
  • 重新启动服务
  • 确保 Web 服务已启动,并且 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.sonarqube
许可证
apache-2.0
下载
103.5k
拥有者