Update openstack_project::base to support Red Hat.

Exclude apt specific resources from running on Red Hat distros.

Long term it would be nice to isolate apt specific changes into
a common module... but this seems reasonable for now.

Change-Id: Iab8f592d6b91eaf0c4f6346fe1d27b388119f880
Reviewed-on: https://review.openstack.org/18905
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
This commit is contained in:
Dan Prince 2013-01-03 13:37:50 -05:00 committed by Jenkins
parent 0bdc3b0cf4
commit 3c0bc92e5a
3 changed files with 184 additions and 68 deletions

View File

@ -0,0 +1,82 @@
# Class: jenkins::params
#
# This class holds parameters that need to be
# accessed by other classes.
class jenkins::params {
case $::osfamily {
'Redhat': {
#yum groupinstall "Development Tools"
# common packages
$jdk_package = 'java-1.7.0-openjdk'
$ccache_package = 'ccache'
$python_netaddr_package = 'python-netaddr'
# packages needed by slaves
$asciidoc_package = 'asciidoc'
$curl_package = 'curl'
$docbook_xml_package = 'docbook-style-xsl'
$docbook5_xml_package = 'docbook5-schemas'
$docbook5_xsl_package = 'docbook5-style-xsl'
$firefox_package = 'firefox'
$mod_wsgi_package = 'mod_wsgi'
$libcurl_dev_package = 'libcurl-devel'
$ldap_dev_package = 'openldap-devel'
$mysql_dev_package = 'mysql-devel'
$nspr_dev_package = 'nspr-devel'
$sqlite_dev_package = 'sqlite-devel'
$libxml2_package = 'libxml2'
$libxml2_dev_package = 'libxml2-devel'
$libxslt_dev_package = 'libxslt-devel'
# FIXME: No Maven packages on RHEL
#$maven_package = 'maven'
$pandoc_package = 'pandoc'
$pkgconfig_package = 'pkgconfig'
$pyflakes_package = 'pyflakes'
$python_libvirt_package = 'libvirt-python'
$python_zmq_package = 'python-zmq'
# FIXME: No Python3 packages on RHEL
#$python3_dev_package = 'python3-devel'
$rubygems_package = 'rubygems'
$sqlite_package = 'sqlite'
$unzip_package = 'unzip'
$xslt_package = 'libxslt'
$xvfb_package = 'xorg-x11-server-Xvfb'
}
'Debian', 'Ubuntu': {
# common packages
$jdk_package = 'default-jdk'
$ccache_package = 'ccache'
$python_netaddr_package = 'python-netaddr'
# packages needed by slaves
$asciidoc_package = 'asciidoc'
$curl_package = 'curl'
$docbook_xml_package = 'docbook-xml'
$docbook5_xml_package = 'docbook5-xml'
$docbook5_xsl_package = 'docbook-xsl'
$firefox_package = 'firefox'
$mod_wsgi_package = 'libapache2-mod-wsgi'
$libcurl_dev_package = 'libcurl4-gnutls-dev'
$ldap_dev_package = 'libldap2-dev'
$mysql_dev_package = 'libmysqlclient-dev'
$nspr_dev_package = 'libnspr4-dev'
$sqlite_dev_package = 'libsqlite3-dev'
$libxml2_package = 'libxml2-utils'
$libxml2_dev_package = 'libxml2-dev'
$libxslt_dev_package = 'libxslt1-dev'
$maven_package = 'maven2'
$pandoc_package = 'pandoc'
$pkgconfig_package = 'pkg-config'
$pyflakes_package = 'pyflakes'
$python_libvirt_package = 'python-libvirt'
$python_zmq_package = 'python-zmq'
$python3_dev_package = 'python3-all-dev'
$rubygems_package = 'rubygems'
$sqlite_package = 'sqlite3'
$unzip_package = 'unzip'
$xslt_package = 'xsltproc'
$xvfb_package = 'xvfb'
}
default: {
fail("Unsupported osfamily: ${::osfamily} The 'jenkins' module only supports osfamily Ubuntu or Redhat(slaves only).")
}
}
}

View File

@ -8,6 +8,7 @@ class jenkins::slave(
) {
include pip
include jenkins::params
if ($user == true) {
class { 'jenkins::jenkinsuser':
@ -19,44 +20,39 @@ class jenkins::slave(
# Packages that all jenkins slaves need
$common_packages = [
'default-jdk', # jdk for building java jobs
'build-essential',
'ccache',
'python-netaddr', # Needed for devstack address_in_net()
$::jenkins::params::jdk_package, # jdk for building java jobs
$::jenkins::params::ccache_package,
$::jenkins::params::python_netaddr_package, # Needed for devstack address_in_net()
]
# Packages that most jenkins slaves (eg, unit test runners) need
$standard_packages = [
'asciidoc', # for building gerrit/building openstack docs
'curl',
'docbook-xml', # for building openstack docs
'docbook5-xml', # for building openstack docs
'docbook-xsl', # for building openstack docs
'firefox', # for selenium tests
'libapache2-mod-wsgi',
'libcurl4-gnutls-dev',
'libldap2-dev',
'libmysqlclient-dev',
'libnspr4-dev', # for spidermonkey, used by ceilometer
'libsasl2-dev', # for keystone ldap auth integration
'libsqlite3-dev',
'libxml2-dev',
'libxml2-utils', # for xmllint, need for wadl
'libxslt1-dev',
'maven2',
'mercurial',
'pandoc', #for docs, markdown->docbook, bug 924507
'pkg-config', # for spidermonkey, used by ceilometer
'pyflakes',
'python-libvirt',
'python-subunit', # for subunit2html.py
'python-zmq', # zeromq unittests (not pip installable)
'python3-all-dev',
'rubygems',
'sqlite3',
'unzip',
'xsltproc', # for building openstack docs
'xvfb', # for selenium tests
$::jenkins::params::asciidoc_package, # for building gerrit/building openstack docs
$::jenkins::params::curl_package,
$::jenkins::params::docbook_xml_package, # for building openstack docs
$::jenkins::params::docbook5_xml_package, # for building openstack docs
$::jenkins::params::docbook5_xsl_package, # for building openstack docs
$::jenkins::params::firefox_package, # for selenium tests
$::jenkins::params::mod_wsgi_package,
$::jenkins::params::libcurl_dev_package,
$::jenkins::params::ldap_dev_package,
$::jenkins::params::libsasl_dev, # for keystone ldap auth integration
$::jenkins::params::mysql_dev_package,
$::jenkins::params::nspr_dev_package, # for spidermonkey, used by ceilometer
$::jenkins::params::sqlite_dev_package,
$::jenkins::params::libxml2_package,
$::jenkins::params::libxml2_dev_package, # for xmllint, need for wadl
$::jenkins::params::libxslt_dev_package,
$::jenkins::params::pandoc_package, #for docs, markdown->docbook, bug 924507
$::jenkins::params::pkgconfig_package, # for spidermonkey, used by ceilometer
$::jenkins::params::pyflakes_package,
$::jenkins::params::python_libvirt_package,
$::jenkins::params::python_zmq_package, # zeromq unittests (not pip installable)
$::jenkins::params::rubygems_package,
$::jenkins::params::sqlite_package,
$::jenkins::params::unzip_package,
$::jenkins::params::xslt_package, # for building openstack docs
$::jenkins::params::xvfb_package, # for selenium tests
]
if ($bare == false) {
@ -69,6 +65,31 @@ class jenkins::slave(
ensure => present,
}
if ($::operatingsystem == 'Redhat') {
exec { 'yum Group Install':
unless => '/usr/bin/yum grouplist "Development tools" | /bin/grep "^Installed Groups"',
command => '/usr/bin/yum -y groupinstall "Development tools"',
}
}
if ($::operatingsystem == 'Ubuntu') {
# install build-essential package group
package { 'build-essential':
ensure => present,
}
package { $::jenkins::params::maven_package:
ensure => present,
}
package { $::jenkins::params::python3_dev_package:
ensure => present,
}
}
if ($bare == false) {
$gem_packages = [
'puppet-lint',
@ -84,6 +105,7 @@ class jenkins::slave(
# Packages that need to be installed from pip
$pip_packages = [
'python-subunit',
'setuptools-git',
'tox',
]
@ -181,17 +203,23 @@ class jenkins::slave(
# Temporary for debugging glance launch problem
# https://lists.launchpad.net/openstack/msg13381.html
file { '/etc/sysctl.d/10-ptrace.conf':
ensure => present,
source => 'puppet:///modules/jenkins/10-ptrace.conf',
owner => 'root',
group => 'root',
mode => '0444',
# NOTE(dprince): ubuntu only as RHEL6 doesn't have sysctl.d yet
if ($::operatingsystem == 'Ubuntu') {
file { '/etc/sysctl.d/10-ptrace.conf':
ensure => present,
source => 'puppet:///modules/jenkins/10-ptrace.conf',
owner => 'root',
group => 'root',
mode => '0444',
}
exec { 'ptrace sysctl':
subscribe => File['/etc/sysctl.d/10-ptrace.conf'],
refreshonly => true,
command => '/sbin/sysctl -p /etc/sysctl.d/10-ptrace.conf',
}
}
exec { 'ptrace sysctl':
subscribe => File['/etc/sysctl.d/10-ptrace.conf'],
refreshonly => true,
command => '/sbin/sysctl -p /etc/sysctl.d/10-ptrace.conf',
}
}

View File

@ -4,7 +4,9 @@ class openstack_project::base(
$certname = $::fqdn,
$install_users = true
) {
include apt
if ($::operatingsystem == 'Ubuntu') {
include apt
}
include openstack_project::users
include sudoers
@ -61,30 +63,34 @@ class openstack_project::base(
}
# Use upstream puppet and pin to version 2.7.*
apt::source { 'puppetlabs':
location => 'http://apt.puppetlabs.com',
repos => 'main',
key => '4BD6EC30',
key_server => 'pgp.mit.edu',
if ($::operatingsystem == 'Ubuntu') {
apt::source { 'puppetlabs':
location => 'http://apt.puppetlabs.com',
repos => 'main',
key => '4BD6EC30',
key_server => 'pgp.mit.edu',
}
file { '/etc/apt/preferences.d/00-puppet.pref':
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
source => 'puppet:///modules/openstack_project/00-puppet.pref',
replace => true,
}
file { '/etc/puppet/puppet.conf':
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
content => template('openstack_project/puppet.conf.erb'),
replace => true,
}
}
file { '/etc/apt/preferences.d/00-puppet.pref':
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
source => 'puppet:///modules/openstack_project/00-puppet.pref',
replace => true,
}
file { '/etc/puppet/puppet.conf':
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
content => template('openstack_project/puppet.conf.erb'),
replace => true,
}
}
# vim:sw=2:ts=2:expandtab:textwidth=79