Monty Taylor 86b270fe8d Add zeromq library to build slaves.
Change-Id: I6c2955242b54fdedb1b420db396b05e815c1b13b
2012-06-14 16:19:56 -04:00

182 lines
4.9 KiB
Puppet

class jenkins_slave($ssh_key, $sudo = false, $bare = false, $user = true) {
if ($user == true) {
jenkinsuser { "jenkins":
ensure => present,
sudo => $sudo,
ssh_key => "${ssh_key}"
}
}
# Packages that all jenkins slaves need
$common_packages = [
"default-jdk", # jdk for building java jobs
"build-essential",
"autoconf",
"automake",
"ccache",
"devscripts",
"python-pip",
]
# Packages that most jenkins slaves (eg, unit test runners) need
$standard_packages = [
"apache2",
"asciidoc", # for building gerrit
"cdbs",
"curl",
"debootstrap",
"dnsmasq-base",
"ebtables",
"gawk",
"graphviz",
"iptables",
"kpartx",
"kvm",
"libapache2-mod-wsgi",
"libcurl4-gnutls-dev",
"libldap2-dev",
"libmysqlclient-dev",
"libsasl2-dev",
"libsqlite3-dev",
"libtool",
"libvirt-bin",
"libxml2-dev",
"libxslt1-dev",
"lxc",
"maven2",
"mercurial", # needed by pip bundle
"mysql-server",
"pandoc", #for docs, markdown->docbook, bug 924507
"parted",
"pep8",
"psmisc",
"pylint",
"python-all-dev",
"python-cheetah",
"python-libvirt",
"python-libxml2",
"python-sphinx",
"python-unittest2",
"python-vm-builder",
"python-zmq", # zeromq unittests (not pip installable)
"python3-all-dev",
"screen",
"socat",
"sqlite3",
"swig",
"unzip",
"vlan",
"wget",
"pyflakes"]
if ($bare == false) {
$packages = [$common_packages, $standard_packages]
} else {
$packages = $common_packages
}
package { $packages:
ensure => present,
}
package { "git-review":
ensure => latest, # okay to use latest for pip
provider => pip,
require => Package[python-pip],
}
file { 'profilerubygems':
name => '/etc/profile.d/rubygems.sh',
owner => 'root',
group => 'root',
mode => 644,
ensure => 'present',
source => [
"puppet:///modules/jenkins_slave/rubygems.sh",
],
}
file { 'ccachegcc':
name => '/usr/local/bin/gcc',
ensure => link,
target => '/usr/bin/ccache',
require => Package['ccache'],
}
file { 'ccacheg++':
name => '/usr/local/bin/g++',
ensure => link,
target => '/usr/bin/ccache',
require => Package['ccache'],
}
file { 'ccachecc':
name => '/usr/local/bin/cc',
ensure => link,
target => '/usr/bin/ccache',
require => Package['ccache'],
}
file { 'ccachec++':
name => '/usr/local/bin/c++',
ensure => link,
target => '/usr/bin/ccache',
require => Package['ccache'],
}
if ($bare == false) {
exec { "jenins-slave-mysql":
creates => "/var/lib/mysql/openstack_citest/",
command => "/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e \"\
CREATE USER 'openstack_citest'@'localhost' IDENTIFIED BY 'openstack_citest';\
CREATE DATABASE openstack_citest;\
GRANT ALL ON openstack_citest.* TO 'openstack_citest'@'localhost';\
FLUSH PRIVILEGES;\"",
require => [
File["/etc/mysql/my.cnf"], # For myisam default tables
Package["mysql-server"],
Service["mysql"]
]
}
file { "/etc/mysql/my.cnf":
source => 'puppet:///modules/jenkins_slave/my.cnf',
owner => 'root',
group => 'root',
ensure => 'present',
replace => 'true',
mode => 444,
require => Package["mysql-server"],
}
service { "mysql":
name => "mysql",
ensure => running,
enable => true,
subscribe => File["/etc/mysql/my.cnf"],
require => [File["/etc/mysql/my.cnf"], Package["mysql-server"]]
}
}
file { '/usr/local/jenkins':
owner => 'root',
group => 'root',
mode => 755,
ensure => 'directory',
}
file { '/usr/local/jenkins/slave_scripts':
owner => 'root',
group => 'root',
mode => 755,
ensure => 'directory',
recurse => true,
require => File['/usr/local/jenkins'],
source => [
"puppet:///modules/jenkins_slave/slave_scripts",
],
}
}