Skip to content

Commit

Permalink
great rework part 1
Browse files Browse the repository at this point in the history
  • Loading branch information
Lightning- committed Jun 20, 2024
1 parent a42da68 commit 017df92
Show file tree
Hide file tree
Showing 20 changed files with 250 additions and 232 deletions.
12 changes: 6 additions & 6 deletions data/common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ sonarqube::user_system: true
sonarqube::version: ~
sonarqube::helper_dir: '/tmp'

sonarqube::runner::download_url: 'http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist'
sonarqube::runner::installroot: '/usr/local'
sonarqube::runner::jdbc:
sonarqube::scanner::download_url: 'https://binaries.sonarsource.com/Distribution/sonar-scanner-cli'
sonarqube::scanner::installroot: '/usr/local'
sonarqube::scanner::jdbc:
url: 'jdbc:h2:tcp://localhost:9092/sonar'
username: 'sonar'
password: 'sonar'
sonarqube::runner::distribution_name: 'sonar-runner'
sonarqube::runner::sonarqube_server: 'http://sonar.local:9000/'
sonarqube::runner::version: ~
sonarqube::scanner::distribution_name: 'sonar-scanner'
sonarqube::scanner::sonarqube_server: 'http://sonar.local:9000/'
sonarqube::scanner::version: ~
4 changes: 3 additions & 1 deletion manifests/config.pp
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# @summary Configure SonarQube
# @api private
class sonarqube::config {
require('sonarqube::install')

File {
owner => $sonarqube::user,
group => $sonarqube::group,
}

# Create configuration files
if $sonarqube::config != undef {
if $sonarqube::config !~ Undef {
# Create config from scratch, do not use the template.
file { "${sonarqube::installdir}/conf/sonar.properties":
source => $sonarqube::config,
Expand Down
48 changes: 23 additions & 25 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -129,46 +129,46 @@
#
class sonarqube (
# required parameters
String $arch,
String $context_path,
String[1] $arch,
String[1] $context_path,
Hash $crowd,
String $download_url,
String $edition,
String $group,
String[1] $download_url,
String[1] $edition,
String[1] $group,
Hash $http_proxy,
Hash $https,
String $home,
String[1] $home,
Stdlib::Absolutepath $installroot,
Hash $jdbc,
Hash $ldap,
Stdlib::Absolutepath $log_folder,
String $distribution_name,
String[1] $distribution_name,
Hash $pam,
Stdlib::Absolutepath $plugin_tmpdir,
Integer $port,
Integer $portajp,
Variant[Stdlib::Port, Integer[-1, 0]] $port,
Variant[Stdlib::Port, Integer[-1, 0]] $portajp,
Boolean $profile,
String $search_host,
Integer $search_port,
String $service,
String[1] $search_host,
Variant[Stdlib::Port, Integer[-1, 0]] $search_port,
String[1] $service,
Boolean $manage_service,
Stdlib::Absolutepath $download_dir,
Boolean $updatecenter,
String $pidfile,
String $user,
String[1] $pidfile,
String[1] $user,
Boolean $user_system,
String $version,
String[1] $version,
Stdlib::Absolutepath $helper_dir,
# optional parameters
Optional[String] $ce_java_opts = undef,
Optional[String[1]] $ce_java_opts = undef,
Optional[Integer] $ce_workercount = undef,
Optional[String] $config = undef,
Optional[String] $host = undef,
Optional[String] $search_java_opts = undef,
Optional[String] $search_java_additional_opts = undef,
Optional[String[1]] $config = undef,
Optional[String[1]] $host = undef,
Optional[String[1]] $search_java_opts = undef,
Optional[String[1]] $search_java_additional_opts = undef,
Optional[Hash] $sso = undef,
Optional[String] $web_java_opts = undef,
Optional[String] $system_passcode = undef,
Optional[String[1]] $web_java_opts = undef,
Optional[String[1]] $system_passcode = undef,
) {
Exec {
path => '/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin',
Expand All @@ -185,7 +185,5 @@
$tmpzip = "${sonarqube::download_dir}/${sonarqube::distribution_name}-${sonarqube::version}.zip"
$script = "${installdir}/bin/${sonarqube::arch}/sonar.sh"

class { 'sonarqube::install': }
-> class { 'sonarqube::config': }
-> class { 'sonarqube::service': }
include(['sonarqube::install', 'sonarqube::config', 'sonarqube::service'])
}
67 changes: 43 additions & 24 deletions manifests/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,7 @@
$source_url = "${sonarqube::download_url}/${sonarqube::distribution_name}-${sonarqube::edition}-${sonarqube::version}.zip"
}

if ! defined(Package[unzip]) {
stdlib::ensure_packages(['unzip'], {
ensure => present,
before => Exec['install sonarqube distribution']
})
}
stdlib::ensure_packages('unzip')

# Create user and group
user { $sonarqube::user:
Expand All @@ -26,42 +21,62 @@
managehome => false,
system => $sonarqube::user_system,
}
-> group { $sonarqube::group:
group { $sonarqube::group:
ensure => present,
system => $sonarqube::user_system,
}

# Download distribution archive
-> archive { 'download sonarqube distribution':
archive { 'download sonarqube distribution':
ensure => present,
path => $sonarqube::tmpzip,
source => $source_url,
}

# Create folder structure
-> file { $sonarqube::home:
file { $sonarqube::home:
ensure => directory,
mode => '0700',
}
-> file { "${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}":
file { "${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}":
ensure => directory,
}
-> file { $sonarqube::installdir:
ensure => link,
target => "${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}",
notify => Class['sonarqube::service'],
file { $sonarqube::installdir:
ensure => link,
target => "${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}",
require => File["${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}"],
notify => Class['sonarqube::service'],
}

sonarqube::move_to_home { 'data':
require => File[$sonarqube::home],
}

sonarqube::move_to_home { 'extras':
require => File[$sonarqube::home],
}

sonarqube::move_to_home { 'extensions':
require => File[$sonarqube::home],
}

sonarqube::move_to_home { 'logs':
require => File[$sonarqube::home],
}
-> sonarqube::move_to_home { 'data': }
-> sonarqube::move_to_home { 'extras': }
-> sonarqube::move_to_home { 'extensions': }
-> sonarqube::move_to_home { 'logs': }

# Uncompress (new) sonar version
-> exec { 'install sonarqube distribution':
command => "unzip -o ${sonarqube::tmpzip} -d ${sonarqube::installroot} && chown -R \
${sonarqube::user}:${sonarqube::group} ${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version} && chown -R ${sonarqube::user}:${sonarqube::group} ${sonarqube::home}", # lint:ignore:140chars
exec { 'install sonarqube distribution':
command => "unzip -o ${sonarqube::tmpzip} -d ${sonarqube::installroot}",
creates => "${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}/bin",
notify => Class['sonarqube::service'],
require => [Package['unzip'], Archive['download sonarqube distribution']],
notify => [Class['sonarqube::service'], Exec['sonarqube distribution permissions']],
}

exec { 'sonarqube distribution permissions':
command => "chown -R ${sonarqube::user}:${sonarqube::group} ${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version} ${sonarqube::home}", # lint:ignore:140chars
refreshonly => true,
require => [User[$sonarqube::user], Group[$sonarqube::group], File[$sonarqube::home]],
notify => Class['sonarqube::service'],
}

# Setup helper scripts to ensure that old versions of sonar and plugins
Expand All @@ -73,15 +88,19 @@
file { "${sonarqube::helper_dir}/cleanup-old-plugin-versions.sh":
content => epp("${module_name}/cleanup-old-plugin-versions.sh.epp"),
mode => '0755',
require => File[$sonarqube::helper_dir],
}
-> file { "${sonarqube::helper_dir}/cleanup-old-sonarqube-versions.sh":
file { "${sonarqube::helper_dir}/cleanup-old-sonarqube-versions.sh":
content => epp("${module_name}/cleanup-old-sonarqube-versions.sh.epp"),
mode => '0755',
require => File[$sonarqube::helper_dir],
}
-> exec { 'remove-old-versions-of-sonarqube':

exec { 'remove-old-versions-of-sonarqube':
command => "${sonarqube::helper_dir}/cleanup-old-sonarqube-versions.sh ${sonarqube::installroot} ${sonarqube::version}",
path => '/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin',
refreshonly => true,
require => File["${sonarqube::helper_dir}/cleanup-old-sonarqube-versions.sh"],
subscribe => File["${sonarqube::installroot}/${sonarqube::distribution_name}-${sonarqube::version}"],
}

Expand Down
8 changes: 5 additions & 3 deletions manifests/move_to_home.pp
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
file { "${home}/${name}":
ensure => directory,
}
-> file { "${sonarqube::installdir}/${name}":
ensure => link,
target => "${home}/${name}",
file { "${sonarqube::installdir}/${name}":
ensure => link,
force => true,
target => "${home}/${name}",
require => File["${home}/${name}"],
}
}
31 changes: 15 additions & 16 deletions manifests/plugin.pp
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@
# and purge old plugin versions.
#
define sonarqube::plugin (
String $version,
String $artifactid = $name,
String[1] $version,
String[1] $artifactid = $name,
Enum['present','absent'] $ensure = present,
Boolean $legacy = false,
String $groupid = 'org.codehaus.sonar-plugins',
Optional[String] $ghid = undef,
Optional[String] $url = undef,
String[1] $groupid = 'org.codehaus.sonar-plugins',
Optional[String[1]] $ghid = undef,
Optional[String[1]] $url = undef,
) {
include 'sonarqube'

Expand All @@ -44,20 +44,19 @@

# Install plugin
if $ensure == present {
if $url {
if $url !~ Undef {
# Use direct download URL for installation

archive { "download plugin ${plugin_name}":
ensure => present,
path => $plugin_tmp,
source => $url,
before => File[$plugin],
notify => [
File[$plugin],
Exec["remove old versions of ${artifactid}"],
],
}
} elsif $ghid {
} elsif $ghid !~ Undef {
# Use GitHub project URL for installation

# Compose GitHub download URL. If the project does not use this
Expand All @@ -68,13 +67,12 @@
ensure => present,
path => $plugin_tmp,
source => $_ghurl,
before => File[$plugin],
notify => [
File[$plugin],
Exec["remove old versions of ${artifactid}"],
],
}
} elsif ($legacy == false) and $version {
} elsif !$legacy {
# Install from SonarSource
# NOTE: This feature is deprecated since SonarQube 8.5, see:
# https://community.sonarsource.com/t/sonarqube-v8-5-and-beyond-where-did-all-the-plugins-go/32792
Expand All @@ -87,20 +85,18 @@
ensure => present,
path => $plugin_tmp,
source => $_sonarurl,
before => File[$plugin],
notify => [
File[$plugin],
Exec["remove old versions of ${artifactid}"],
],
}
} elsif ($legacy == true) and $version {
} elsif $legacy {
# Legacy method: install using Maven. May not work with recent versions.

maven { "/tmp/${plugin_name}":
groupid => $groupid,
artifactid => $artifactid,
version => $version,
before => File[$plugin],
require => File[$sonarqube::plugin_dir],
notify => [
File[$plugin],
Expand All @@ -114,13 +110,16 @@
# Copy plugin from tmp location to plugin directory.
file { $plugin:
ensure => $ensure,
source => "/tmp/${plugin_name}",
source => $plugin_tmp,
owner => $sonarqube::user,
group => $sonarqube::group,
notify => Class['sonarqube::service'],
notify => [
Class['sonarqube::service'],
Exec["remove old versions of ${artifactid}"],
],
}
# Cleanup old version of this plugin
~> exec { "remove old versions of ${artifactid}":
exec { "remove old versions of ${artifactid}":
command => "${sonarqube::helper_dir}/cleanup-old-plugin-versions.sh ${sonarqube::plugin_dir} ${artifactid} ${version}",
path => ['/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'],
refreshonly => true,
Expand Down
12 changes: 0 additions & 12 deletions manifests/runner/config.pp

This file was deleted.

Loading

0 comments on commit 017df92

Please sign in to comment.