Merge "Make devstack nodes jenkins slaves."
This commit is contained in:
commit
6421fc0e6d
@ -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"],
|
}
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -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",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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"]]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user