Merge "Make devstack nodes jenkins slaves."

This commit is contained in:
Jenkins 2012-05-22 15:56:04 +00:00 committed by Gerrit Code Review
commit 6421fc0e6d
4 changed files with 70 additions and 78 deletions

View File

@ -1,5 +1,7 @@
import "openstack" import "openstack"
$jenkins_ssh_key = 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtioTW2wh3mBRuj+R0Jyb/mLt5sjJ8dEvYyA8zfur1dnqEt5uQNLacW4fHBDFWJoLHfhdfbvray5wWMAcIuGEiAA2WEH23YzgIbyArCSI+z7gB3SET8zgff25ukXlN+1mBSrKWxIza+tB3NU62WbtO6hmelwvSkZ3d7SDfHxrc4zEpmHDuMhxALl8e1idqYzNA+1EhZpbcaf720mX+KD3oszmY2lqD1OkKMquRSD0USXPGlH3HK11MTeCArKRHMgTdIlVeqvYH0v0Wd1w/8mbXgHxfGzMYS1Ej0fzzJ0PC5z5rOqsMqY1X2aC1KlHIFLAeSf4Cx0JNlSpYSrlZ/RoiQ== hudson@hudson'
class openstack_cron { class openstack_cron {
include logrotate include logrotate
cron { "updatepuppet": cron { "updatepuppet":
@ -22,7 +24,7 @@ class openstack_jenkins_slave {
iptables_public_tcp_ports => [] iptables_public_tcp_ports => []
} }
class { 'jenkins_slave': class { 'jenkins_slave':
ssh_key => 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtioTW2wh3mBRuj+R0Jyb/mLt5sjJ8dEvYyA8zfur1dnqEt5uQNLacW4fHBDFWJoLHfhdfbvray5wWMAcIuGEiAA2WEH23YzgIbyArCSI+z7gB3SET8zgff25ukXlN+1mBSrKWxIza+tB3NU62WbtO6hmelwvSkZ3d7SDfHxrc4zEpmHDuMhxALl8e1idqYzNA+1EhZpbcaf720mX+KD3oszmY2lqD1OkKMquRSD0USXPGlH3HK11MTeCArKRHMgTdIlVeqvYH0v0Wd1w/8mbXgHxfGzMYS1Ej0fzzJ0PC5z5rOqsMqY1X2aC1KlHIFLAeSf4Cx0JNlSpYSrlZ/RoiQ== hudson@hudson' ssh_key => $jenkins_ssh_key
} }
} }
@ -326,12 +328,11 @@ node /^.*\.template\.openstack\.org$/ {
class { 'openstack_template': class { 'openstack_template':
iptables_public_tcp_ports => [] iptables_public_tcp_ports => []
} }
# This sets up a user with jenkins ssh key and adds it to the sudo group. class { 'jenkins_slave':
# Don't do that on regular jenkins slaves, only on lowest-privilege test ssh_key => $jenkins_ssh_key,
# hosts, such as the devstack hosts. sudo => true,
realize( bare => true
User::Virtual::Localuser["jenkins"], }
)
} }
# #

View File

@ -35,9 +35,4 @@ class openstack_project::users {
realname => 'Duncan McGreggor', realname => 'Duncan McGreggor',
sshkeys => "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAttca0Lahzo1rskWcCGwYh71ADmUsn/6RNBd7H7WVsX+QTacq90fpNghFNTen4I7tC1p0IemwHcCOb1noeXkjxl7W5r7l0OhiqMHp/u2ao0F3dINryuNEww2IHRhY6GwwGJ+slv+i4/FviUgqHZVzopUon/9VY0mu1wfu3vTRw0qXsvqr09Jiavt/8gJ0Fa5PsYkf7l0edFk0scTmGp3G4HY/ZvnbChfZMg6L/xcGPtK/GbLYg6PGtLVVnubXMtxD9GZYhwrY0i9Z2egcRI2W7IznM4OGFzYgA9HZqylPoWt4+ghzC5azUlbO2u6+8HigJVblAGHRWcznEf/ZDR3erw== oubiwann@rhosgobel\n", sshkeys => "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAttca0Lahzo1rskWcCGwYh71ADmUsn/6RNBd7H7WVsX+QTacq90fpNghFNTen4I7tC1p0IemwHcCOb1noeXkjxl7W5r7l0OhiqMHp/u2ao0F3dINryuNEww2IHRhY6GwwGJ+slv+i4/FviUgqHZVzopUon/9VY0mu1wfu3vTRw0qXsvqr09Jiavt/8gJ0Fa5PsYkf7l0edFk0scTmGp3G4HY/ZvnbChfZMg6L/xcGPtK/GbLYg6PGtLVVnubXMtxD9GZYhwrY0i9Z2egcRI2W7IznM4OGFzYgA9HZqylPoWt4+ghzC5azUlbO2u6+8HigJVblAGHRWcznEf/ZDR3erw== oubiwann@rhosgobel\n",
} }
@user::virtual::localuser { 'jenkins':
realname => 'OpenStack Jenkins',
sshkeys => "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtioTW2wh3mBRuj+R0Jyb/mLt5sjJ8dEvYyA8zfur1dnqEt5uQNLacW4fHBDFWJoLHfhdfbvray5wWMAcIuGEiAA2WEH23YzgIbyArCSI+z7gB3SET8zgff25ukXlN+1mBSrKWxIza+tB3NU62WbtO6hmelwvSkZ3d7SDfHxrc4zEpmHDuMhxALl8e1idqYzNA+1EhZpbcaf720mX+KD3oszmY2lqD1OkKMquRSD0USXPGlH3HK11MTeCArKRHMgTdIlVeqvYH0v0Wd1w/8mbXgHxfGzMYS1Ej0fzzJ0PC5z5rOqsMqY1X2aC1KlHIFLAeSf4Cx0JNlSpYSrlZ/RoiQ== hudson@hudson\n",
}
} }

View File

@ -1,7 +1,8 @@
class jenkins_slave($ssh_key) { class jenkins_slave($ssh_key, $sudo = false, $bare = false) {
jenkinsuser { "jenkins": jenkinsuser { "jenkins":
ensure => present, ensure => present,
sudo => $sudo,
ssh_key => "${ssh_key}" ssh_key => "${ssh_key}"
} }
@ -10,25 +11,28 @@ class jenkins_slave($ssh_key) {
require => [ Package[git], File[jenkinshome] ], require => [ Package[git], File[jenkinshome] ],
} }
devstackrepo { "devstack":
ensure => present,
require => [ Package[git], File[jenkinshome] ],
}
apt::ppa { "ppa:openstack-ci/build-depends": apt::ppa { "ppa:openstack-ci/build-depends":
ensure => absent ensure => absent
} }
$packages = ["apache2", # Packages that all jenkins slaves need
"asciidoc", # for building gerrit $common_packages = [
"default-jdk", # jdk for building java jobs
"build-essential",
"autoconf", "autoconf",
"automake", "automake",
"build-essential",
"ccache", "ccache",
"devscripts",
"python-pip",
]
# Packages that most jenkins slaves (eg, unit test runners) need
$standard_packages = [
"apache2",
"asciidoc", # for building gerrit
"cdbs", "cdbs",
"curl", "curl",
"debootstrap", "debootstrap",
"devscripts",
"dnsmasq-base", "dnsmasq-base",
"ebtables", "ebtables",
"gawk", "gawk",
@ -49,8 +53,7 @@ class jenkins_slave($ssh_key) {
"lxc", "lxc",
"maven2", "maven2",
"mercurial", # needed by pip bundle "mercurial", # needed by pip bundle
"mysql-server", "mysql-server",
"default-jdk", # jdk for building java jobs
"pandoc", #for docs, markdown->docbook, bug 924507 "pandoc", #for docs, markdown->docbook, bug 924507
"parted", "parted",
"pep8", "pep8",
@ -60,7 +63,6 @@ class jenkins_slave($ssh_key) {
"python-cheetah", "python-cheetah",
"python-libvirt", "python-libvirt",
"python-libxml2", "python-libxml2",
"python-pip",
"python-sphinx", "python-sphinx",
"python-unittest2", "python-unittest2",
"python-vm-builder", "python-vm-builder",
@ -72,17 +74,18 @@ class jenkins_slave($ssh_key) {
"unzip", "unzip",
"vlan", "vlan",
"wget"] "wget"]
if ($bare == false) {
$packages = [$common_packages, $standard_packages]
} else {
$packages = $common_packages
}
package { $packages: package { $packages:
ensure => "latest", ensure => "latest",
require => Apt::Ppa["ppa:openstack-ci/build-depends"], require => Apt::Ppa["ppa:openstack-ci/build-depends"],
} }
package { "apache-libcloud":
ensure => latest,
provider => pip,
require => Package[python-pip]
}
package { "git-review": package { "git-review":
ensure => latest, ensure => latest,
provider => pip, provider => pip,
@ -108,36 +111,6 @@ class jenkins_slave($ssh_key) {
], ],
} }
cron { "tmpreaper":
user => jenkins,
ensure => 'absent',
}
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 { 'jenkinslogs':
name => '/var/log/jenkins/tmpreaper.log*',
ensure => 'absent',
}
file { 'jenkinslogdir':
name => '/var/log/jenkins',
ensure => 'absent',
force => true,
}
file { 'ccachegcc': file { 'ccachegcc':
name => '/usr/local/bin/gcc', name => '/usr/local/bin/gcc',
ensure => link, ensure => link,
@ -166,22 +139,38 @@ class jenkins_slave($ssh_key) {
require => Package['ccache'], require => Package['ccache'],
} }
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": if ($bare == false) {
name => "mysql", exec { "jenins-slave-mysql":
ensure => running, creates => "/var/lib/mysql/openstack_citest/",
enable => true, command => "/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e \"\
subscribe => File["/etc/mysql/my.cnf"], CREATE USER 'openstack_citest'@'localhost' IDENTIFIED BY 'openstack_citest';\
require => [File["/etc/mysql/my.cnf"], Package["mysql-server"]] 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"]]
}
}
} }

View File

@ -1,9 +1,15 @@
define jenkinsuser($ensure = present, $ssh_key) { define jenkinsuser($ensure = present, $sudo = false, $ssh_key) {
group { 'jenkins': group { 'jenkins':
ensure => 'present' ensure => 'present'
} }
if ($sudo == true) {
$groups = ['sudo', 'admin']
} else {
$groups = []
}
user { 'jenkins': user { 'jenkins':
ensure => 'present', ensure => 'present',
comment => 'Jenkins User', comment => 'Jenkins User',
@ -11,6 +17,7 @@ define jenkinsuser($ensure = present, $ssh_key) {
gid => 'jenkins', gid => 'jenkins',
shell => '/bin/bash', shell => '/bin/bash',
membership => 'minimum', membership => 'minimum',
groups => $groups,
require => Group['jenkins'] require => Group['jenkins']
} }