Skip to content
This repository has been archived by the owner on Jun 7, 2020. It is now read-only.

added postgres support #32

Closed
wants to merge 15 commits into from
Closed
19 changes: 13 additions & 6 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,21 @@ sonar_version_directory: "sonarqube-{{ sonar_version }}"

sonar_web_context: ''

# MySQL database connection details.
sonar_mysql_username: sonar
sonar_mysql_password: sonar
# The Database engine.
# possible values: postgres and mysql
sonar_database_engine: postgres
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that the default database engine should be mysql to avoid regression.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for your recommendation. mysql wasn't working that's why I've changed the default to postgres.


# Database connection details

sonar_mysql_host: localhost
sonar_mysql_port: "3306"
sonar_mysql_database: sonar
sonar_database_username: sonar
sonar_database_password: sonar

sonar_database_host: localhost
# mysqlsql default port is 3306 and the postgres' is 5432
sonar_database_port: "5432"
sonar_database_name: sonar

# MySQL database connection details.
sonar_mysql_allowed_hosts:
- "127.0.0.1"
- "::1"
Expand Down
3 changes: 2 additions & 1 deletion meta/main.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
dependencies:
- geerlingguy.java
- geerlingguy.mysql
- {role: 'geerlingguy.postgresql', when: sonar_database_engine == 'postgres', become: yes}
- {role: 'geerlingguy.mysql', when: sonar_database_engine == 'mysql'}

galaxy_info:
author: geerlingguy
Expand Down
20 changes: 5 additions & 15 deletions tasks/configure.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
---
- name: Configure SonarQube JDBC settings for MySQL.
lineinfile:
dest: /usr/local/sonar/conf/sonar.properties
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
notify: restart sonar
with_items:
- regexp: "^sonar.jdbc.username"
line: "sonar.jdbc.username={{ sonar_mysql_username }}"
- regexp: "^sonar.jdbc.password"
line: "sonar.jdbc.password={{ sonar_mysql_password }}"
- regexp: "^sonar.jdbc.url"
line: "sonar.jdbc.url=jdbc:mysql://{{ sonar_mysql_host }}:{{ sonar_mysql_port }}/{{ sonar_mysql_database }}?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance"
- regexp: "^sonar.web.context"
line: "sonar.web.context={{ sonar_web_context }}"
- include: configure_mysql.yml
when: sonar_database_engine == "mysql"

- include: configure_postgres.yml
when: sonar_database_engine == "postgres"
29 changes: 29 additions & 0 deletions tasks/configure_mysql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
- name: Create a database for Sonar.
mysql_db:
name: "{{ sonar_database_name }}"
state: present

- name: Create a sonar user.
mysql_user:
name: "{{ sonar_database_username }}"
host: "{{ item }}"
priv: "{{ sonar_database_name }}.*:ALL"
password: "{{ sonar_database_password }}"
with_items: "{{ sonar_mysql_allowed_hosts }}"

- name: Configure SonarQube JDBC settings for MySQL.
lineinfile:
dest: /usr/local/sonar/conf/sonar.properties
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
notify: restart sonar
with_items:
- regexp: "^sonar.jdbc.username"
line: "sonar.jdbc.username={{ sonar_database_username }}"
- regexp: "^sonar.jdbc.password"
line: "sonar.jdbc.password={{ sonar_database_password }}"
- regexp: "^sonar.jdbc.url"
line: "sonar.jdbc.url=jdbc:mysql://{{ sonar_database_host }}:{{ sonar_database_port }}/{{ sonar_database_name }}?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance"
- regexp: "^sonar.web.context"
line: "sonar.web.context={{ sonar_web_context }}"
33 changes: 33 additions & 0 deletions tasks/configure_postgres.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
- name: Create a database for Sonar.
become: yes
become_user: "{{ postgresql_user }}"
postgresql_db:
name: "{{ sonar_database_name }}"
encoding: UTF-8
state: present

- name: Create a sonar user.
become: yes
become_user: "{{ postgresql_user }}"
postgresql_user:
name: "{{ sonar_database_username }}"
password: "{{ sonar_database_password }}"
db: "{{ sonar_database_name }}"
priv: "ALL"

- name: Configure SonarQube JDBC settings for Postgres.
lineinfile:
dest: /usr/local/sonar/conf/sonar.properties
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
notify: restart sonar
with_items:
- regexp: "^sonar.jdbc.username"
line: "sonar.jdbc.username={{ sonar_database_username }}"
- regexp: "^sonar.jdbc.password"
line: "sonar.jdbc.password={{ sonar_database_password }}"
- regexp: "^sonar.jdbc.url"
line: "sonar.jdbc.url=jdbc:postgresql://{{ sonar_database_host }}:{{ sonar_database_port }}/{{ sonar_database_name }}"
- regexp: "^sonar.web.context"
line: "sonar.web.context={{ sonar_web_context }}"
13 changes: 0 additions & 13 deletions tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,4 @@
---
- name: Create a database for Sonar.
mysql_db:
name: "{{ sonar_mysql_database }}"
state: present

- name: Create a sonar user.
mysql_user:
name: "{{ sonar_mysql_username }}"
host: "{{ item }}"
priv: "{{ sonar_mysql_database }}.*:ALL"
password: "{{ sonar_mysql_password }}"
with_items: "{{ sonar_mysql_allowed_hosts }}"

- name: Download Sonar.
get_url:
url: "{{ sonar_download_url }}"
Expand Down
1 change: 1 addition & 0 deletions tests/requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
- src: geerlingguy.repo-remi
- src: geerlingguy.java
- src: geerlingguy.mysql
- src: geerlingguy.postgresql
2 changes: 2 additions & 0 deletions tests/test-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
vars:
# Latest version of SonarQube, from http://www.sonarqube.org/downloads/
sonar_version: 5.6.1
sonar_database_engine: "mysql"
sonar_database_port: "3306"

pre_tasks:
- name: Update apt cache.
Expand Down
4 changes: 4 additions & 0 deletions tests/test-lts.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
---
- hosts: all

vars:
sonar_database_engine: "mysql"
sonar_database_port: "3306"

pre_tasks:
- name: Update apt cache.
apt: update_cache=yes cache_valid_time=600
Expand Down
2 changes: 2 additions & 0 deletions tests/test-web_context.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

vars:
sonar_web_context: "/sonar"
sonar_database_engine: "mysql"
sonar_database_port: "3306"

pre_tasks:
- name: Update apt cache.
Expand Down