
This is a first draft of the puppet module to be used to deploy ci-dashboard.openstack.org as described in [1]. I did not put it into a separate repository on github due to some restrictions. Adding it here should help to collaborate using standard review process. If we are happy with the module, we would move it to openstack/puppet-ci_scoreboard after spec [1] is approved. [1] https://review.openstack.org/#/c/194437/ Change-Id: I1f0311d081ef970a767470b9e5d2b0a61ec2c8e3
148 lines
3.9 KiB
Puppet
148 lines
3.9 KiB
Puppet
# Copyright (c) 2015 IBM Corporation.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# == Class: ci_scoreboard
|
|
#
|
|
# Deploy Third-Party CI Scoreboard.
|
|
#
|
|
# Scoreboard consists of two services: gerrit listener and ui. The puppet
|
|
# module would not start these automatically and it is expected other means
|
|
# to be used.
|
|
# To manually start both:
|
|
# service scoreboard_ui start
|
|
# service scoreboard_gerrit_listener start
|
|
#
|
|
# Scoreboard's UI would be accessible on port 5000 (flask's default).
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*gerrit_user*]
|
|
# Gerrit user account to be used by gerrit listener.
|
|
#
|
|
# [*ssh_private_key*]
|
|
# Contents of ssh private key. This key needs to be authorized to connect
|
|
# to gerrit account.
|
|
|
|
# [*gerrit_hostname*]
|
|
# Gerrit server to be used for scoreboard gerrit listener.
|
|
#
|
|
# [*gerrit_port*]
|
|
#
|
|
#
|
|
# === Examples
|
|
#
|
|
# class { '::ci_scoreboard':
|
|
# gerrit_user => hiera('ci_scoreboard::gerit_user', 'XXX'),
|
|
# ssh_private_key => hiera('ci_scoreboard::ssh_private_key', 'XXX'),
|
|
# }
|
|
#
|
|
# === Authors
|
|
#
|
|
# Mikhail S Medvedev <mmedvede@us.ibm.com>
|
|
#
|
|
class ci_scoreboard (
|
|
$gerrit_user,
|
|
$ssh_private_key,
|
|
$gerrit_hostname = 'review.openstack.org',
|
|
$gerrit_port = 29418,
|
|
) {
|
|
|
|
$ssh_private_key_file = '/var/lib/scoreboard/ssh/id_rsa'
|
|
$log_file_location = '/var/log/scoreboard/scoreboard.log'
|
|
|
|
user { 'scoreboard':
|
|
ensure => present,
|
|
home => '/home/scoreboard',
|
|
shell => '/bin/bash',
|
|
gid => 'scoreboard',
|
|
managehome => true,
|
|
require => Group['scoreboard'],
|
|
}
|
|
group { 'scoreboard':
|
|
ensure => present,
|
|
}
|
|
|
|
package{ 'mongodb':
|
|
ensure => present;
|
|
} ->
|
|
service{ 'mongodb':
|
|
ensure => running,
|
|
enable => true,
|
|
}
|
|
|
|
vcsrepo { '/opt/third-party-ci-tools':
|
|
ensure => latest,
|
|
provider => git,
|
|
revision => 'master',
|
|
source => 'http://github.com/stackforge/third-party-ci-tools',
|
|
} ->
|
|
file { '/opt/scoreboard':
|
|
ensure => 'link',
|
|
target => '/opt/third-party-ci-tools/monitoring/scoreboard',
|
|
} ->
|
|
python::virtualenv { '/usr/scoreboard-env':
|
|
ensure => present,
|
|
requirements => '/opt/scoreboard/requirements.txt',
|
|
owner => 'root',
|
|
group => 'root',
|
|
timeout => 0,
|
|
}
|
|
|
|
file { '/etc/ci-scoreboard/':
|
|
ensure => directory,
|
|
}
|
|
# Template uses:
|
|
# gerrit_user
|
|
# ssh_private_key_file
|
|
# gerrit_server
|
|
# gerrit_port
|
|
# log_file_location
|
|
file { '/etc/ci-scoreboard/ci-scoreboard.conf':
|
|
content => template('ci_scoreboard/ci-scoreboard.conf.erb'),
|
|
}
|
|
|
|
file { ['/var/lib/scoreboard', '/var/lib/scoreboard/ssh',]:
|
|
ensure => directory,
|
|
}
|
|
file { $ssh_private_key_file:
|
|
owner => 'scoreboard',
|
|
group => 'scoreboard',
|
|
mode => '0400',
|
|
content => $ssh_private_key,
|
|
}
|
|
|
|
file { '/var/log/scoreboard':
|
|
ensure => directory,
|
|
owner => 'scoreboard',
|
|
recurse => true, # Want to make sure all log permissions are set
|
|
require => User['scoreboard'],
|
|
}
|
|
|
|
::ci_scoreboard::initd_service { 'scoreboard_ui':
|
|
exec_cmd => '/opt/scoreboard/scoreboard_ui.py',
|
|
venv_dir => '/usr/scoreboard-env',
|
|
short_description => 'CI Scoreboard Web UI',
|
|
runas_user => 'scoreboard',
|
|
}
|
|
|
|
::ci_scoreboard::initd_service { 'scoreboard_gerrit_listener':
|
|
exec_cmd => '/opt/scoreboard/scoreboard_gerrit_listener.py',
|
|
venv_dir => '/usr/scoreboard-env',
|
|
short_description => 'CI Scoreboard Gerrit Event Listener',
|
|
runas_user => 'scoreboard',
|
|
}
|
|
|
|
}
|