lrk.sonarqube

Ansibleロール: SonarQube (lrk.sonarqube)

Molecule Galaxy Ansible Ansible Ansible

SonarQubeをインストールするためのAnsibleロールです。

対応OS

このロールは以下のOSでテストされています。

  • 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. virtualenvを初期化し、要件をセットアップします。例えば:
python -m venv ~/.virtualenvs/molecule
. ~/.virtualenvs/molecule/bin/activate
pip install -r molecule/vagrant/requirements.txt
  1. テストを実行します(デフォルトでCentOSボックスが使用されます):
molecule test -s vagrant
  1. (オプショナル)別のOS(この場合は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アドレス
  sonar_web_host: 0.0.0.0

  # TCPポート
  sonar_web_port: 9000

  # 最大接続数
  sonar_web_http_max_threads: 50

  # 最小スレッド数
  sonar_web_http_min_threads: 5

  # TCPポート
  sonar_search_port: 9001

  # Elasticsearchホスト
  sonar_search_host: 127.0.0.1
  
  # -----------------------------
  # 更新センター

  sonar_updatecenter_activate: true
  http_proxy_host: ""
  http_proxy_port: ""
  
  # -----------------------------
  # ロギング

  sonar_log_level: "INFO"
  sonar_log_rolling_policy: "time:yyyy-MM-dd"
  sonar_log_max_files: 7

  # -----------------------------
  # LDAP
  # Ldap設定(こちらを参照)

  sonar_ldap:

  # -----------------------------
  # 他

  sonar_notifications_delay: 60
  sonar_additional_properties: {}

  # -----------------------------
  # デフォルト内部値の上書き

  sonar_download_url: "https://your_url"
  sonar_plugin_baseurl: "https://your_url"
  sonar_commercial_plugin_baseurl: "https://your_url"
  
  # -----------------------------
  # 開発 - 開発者のみ使用

  sonar_web_dev: false
  sonar_web_dev_sources: ""

依存関係

直接の依存関係はありません。最初にJDKをインストールする必要があります。

例プレイブック

  - hosts: servers
    pre_tasks:
      - name: パッケージの依存関係をインストールします。
        package:
          name: "{{ item }}"
          state: "present"
        with_items:
          - unzip
    roles:
      - lrk.sonarqube

アップグレード

最初にステージング環境でアップグレードをテストしてください。

プロセスは以下のステップで構成されます:

  1. sonar_versionの変数を変更します。
  2. SonarQubeのプラグインバージョンマトリックスに従ってsonar_pluginsの変数をレビューします。
  3. 既存のインストールに対してロールを実行します。Ansibleは以下を行います:
  • インストールフォルダを作成します。
  • 新しいSonarQubeとプラグインのバイナリを配置します。
  • 現在実行中のサービスを停止します。
  • 設定を更新します。
  • サービスを再起動します。
  • Webサービスが起動し、SonarQubeのバージョン番号がweb.logに表示されていることを確認します。
  • 実行中のSonarQubeのバージョンが期待されるものであることを確認します。
  1. その後、http://yourSonarQubeServerURL/setupを開き、[アップグレード手順](https://docs.sonarqube.org/latest/setup/upgrading/)に従ってください(ロールの出力がリマインダーを残します)。

ご注意ください:

  • ロールはデータベースのバックアップを行いません。
  • ロールはバージョンを比較しません。誤ってダウングレードしないようにしてください。
  • ロールは以前のインストールのフォルダを削除しないため、アップグレード後、sonar_install_directory変数に指定されたパスには複数のsonar_base_dirが含まれることになります。

ライセンス

Apache License Version 2.0

参考文献

著者情報

このロールはLrkによって作成されました。

プロジェクトについて

An Ansible Role that install SonarQube.

インストール
ansible-galaxy install lrk.sonarqube
ライセンス
apache-2.0
ダウンロード
103.5k
所有者