system-config/modules/openstack_project/manifests/thick_slave.pp

203 lines
8.1 KiB
Puppet

# Extra configuration (like mysql) that we will want on many but not all
# slaves.
class openstack_project::thick_slave(
$all_mysql_privs = false,
){
include openstack_project::jenkins_params
# Packages that most jenkins slaves (eg, unit test runners) need
$packages = [
$::openstack_project::jenkins_params::ant_package, # for building buck
$::openstack_project::jenkins_params::awk_package, # for building extract_docs.awk to work correctly
$::openstack_project::jenkins_params::asciidoc_package, # for building gerrit/building openstack docs
$::openstack_project::jenkins_params::curl_package,
$::openstack_project::jenkins_params::docbook_xml_package, # for building openstack docs
$::openstack_project::jenkins_params::docbook5_xml_package, # for building openstack docs
$::openstack_project::jenkins_params::docbook5_xsl_package, # for building openstack docs
$::openstack_project::jenkins_params::gettext_package, # for msgfmt, used in translating manuals
$::openstack_project::jenkins_params::gnome_doc_package, # for generating translation files for docs
$::openstack_project::jenkins_params::graphviz_package, # for generating graphs in docs
$::openstack_project::jenkins_params::firefox_package, # for selenium tests
$::openstack_project::jenkins_params::language_fonts_packages,
$::openstack_project::jenkins_params::libcurl_dev_package,
$::openstack_project::jenkins_params::libevent_dev_package, # for gevent egg
$::openstack_project::jenkins_params::libpcap_dev_package, # for pypcap egg
$::openstack_project::jenkins_params::ldap_dev_package,
$::openstack_project::jenkins_params::librrd_dev_package, # for python-rrdtool, used by kwapi
$::openstack_project::jenkins_params::libtidy_package, # for python-tidy, used by sphinxcontrib-docbookrestapi
$::openstack_project::jenkins_params::libsasl_dev, # for keystone ldap auth integration
$::openstack_project::jenkins_params::memcached_package, # for tooz unit tests
$::openstack_project::jenkins_params::redis_package, # for tooz unit tests (and others that use redis)
$::openstack_project::jenkins_params::mongodb_package, # for ceilometer unit tests
$::openstack_project::jenkins_params::mysql_dev_package,
$::openstack_project::jenkins_params::nspr_dev_package, # for spidermonkey, used by ceilometer
$::openstack_project::jenkins_params::sqlite_dev_package,
$::openstack_project::jenkins_params::libvirt_dev_package,
$::openstack_project::jenkins_params::libxml2_package,
$::openstack_project::jenkins_params::libxml2_dev_package, # for xmllint, need for wadl
$::openstack_project::jenkins_params::libxslt_dev_package,
$::openstack_project::jenkins_params::libffi_dev_package, # xattr's cffi dependency
$::openstack_project::jenkins_params::pkgconfig_package, # for spidermonkey, used by ceilometer
$::openstack_project::jenkins_params::python_libvirt_package,
$::openstack_project::jenkins_params::python_lxml_package, # for validating openstack manuals
$::openstack_project::jenkins_params::python_zmq_package, # zeromq unittests (not pip installable)
$::openstack_project::jenkins_params::rubygems_package,
$::openstack_project::jenkins_params::sbcl_package, # cl-openstack-client testing
$::openstack_project::jenkins_params::sqlite_package,
$::openstack_project::jenkins_params::unzip_package,
$::openstack_project::jenkins_params::zip_package,
$::openstack_project::jenkins_params::xslt_package, # for building openstack docs
$::openstack_project::jenkins_params::xvfb_package, # for selenium tests
$::openstack_project::jenkins_params::php5_cli_package, # for community portal build
$::openstack_project::jenkins_params::uuid_dev, # for oslo.messaging pyngus/proton
$::openstack_project::jenkins_params::swig, # for oslo.messaging pyngus/proton
$::openstack_project::jenkins_params::libjpeg_dev, # for sphinx Pillow dep
$::openstack_project::jenkins_params::zlib_dev, # for sphinx Pillow dep
]
package { $packages:
ensure => present,
}
include pip
# for pushing files to swift and uploading to pypi with twine
package { 'requests':
ensure => latest,
provider => pip,
}
if ($::osfamily == 'RedHat') {
# Work around https://bugzilla.redhat.com/show_bug.cgi?id=973375
exec { 'remove_requests':
command => "/usr/bin/yum remove -y ${::openstack_project::jenkins_params::python_requests_package}",
onlyif => "/bin/rpm -qa|/bin/grep -q ${::openstack_project::jenkins_params::python_requests_package}",
before => Package['requests'],
}
} else {
package { $::openstack_project::jenkins_params::python_requests_package:
ensure => absent,
before => Package['requests'],
}
}
if ($::lsbdistcodename == 'trusty') {
# Only install PyPy and Python 3.4 packages on Ubuntu 14.04 LTS (Trusty)
package { $::openstack_project::jenkins_params::pypy_dev_package:
ensure => present,
}
package { $::openstack_project::jenkins_params::pypy_package:
ensure => present,
}
package { $::openstack_project::jenkins_params::python3_dev_package:
ensure => present,
}
package { $::openstack_project::jenkins_params::python3_package:
ensure => present,
}
# for pyeclib, used by swift, not available before Trusty
package { $::openstack_project::jenkins_params::libjerasure_dev_package:
ensure => present,
}
# Don't install the Ruby Gems profile script on Trusty
file { '/etc/profile.d/rubygems.sh':
ensure => absent,
}
} else {
file { '/etc/profile.d/rubygems.sh':
ensure => present,
owner => 'root',
group => 'root',
mode => '0644',
source => 'puppet:///modules/openstack_project/rubygems.sh',
}
}
case $::osfamily {
'RedHat': {
if ($::operatingsystem == 'Fedora') {
# For [tooz, taskflow, nova] using zookeeper in unit tests
package { $::openstack_project::jenkins_params::zookeeper_package:
ensure => present,
}
# Fedora needs community-mysql package for mysql_config
# command used in some gate-{project}-python27
# jobs in Jenkins
package { $::openstack_project::jenkins_params::mysql_package:
ensure => present,
}
if ($::operatingsystemrelease >= 22) {
# For pyeclib, used by swift
package { $::openstack_project::jenkins_params::liberasurecode_dev_package:
ensure => present,
}
}
}
elsif ($::operatingsystem == 'CentOS') {
if ($::operatingsystemmajrelease >= '7') {
# For pyeclib, used by swift
package { $::openstack_project::jenkins_params::liberasurecode_dev_package:
ensure => present,
}
}
}
}
'Debian': {
# For [tooz, taskflow, nova] using zookeeper in unit tests
package { $::openstack_project::jenkins_params::zookeeper_package:
ensure => present,
}
# For openstackid using php5-mcrypt for distro build
package { $::openstack_project::jenkins_params::php5_mcrypt_package:
ensure => present,
}
# For pyeclib, used by swift
package { $::openstack_project::jenkins_params::liberasurecode_dev_package:
ensure => present,
}
}
}
package { 'rake':
ensure => '10.1.1',
provider => gem,
before => Package['puppetlabs_spec_helper'],
require => Package[$::openstack_project::jenkins_params::rubygems_package],
}
package { 'puppet-lint':
ensure => '0.3.2',
provider => gem,
require => Package[$::openstack_project::jenkins_params::rubygems_package],
}
$gem_packages = [
'bundler',
'puppetlabs_spec_helper',
]
package { $gem_packages:
ensure => latest,
provider => gem,
require => Package[$::openstack_project::jenkins_params::rubygems_package],
}
if ($::in_chroot) {
notify { 'databases in chroot':
message => 'databases and grants not created, running in chroot',
}
} else {
class { 'openstack_project::slave_db':
all_mysql_privs => $all_mysql_privs,
}
}
}
# vim:sw=2:ts=2:expandtab:textwidth=79