From 3c0bc92e5abc2fd9719366cb15cab30c61fa5966 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Thu, 3 Jan 2013 13:37:50 -0500 Subject: [PATCH] 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 Reviewed-by: Jeremy Stanley Reviewed-by: James E. Blair Approved: James E. Blair Tested-by: Jenkins --- modules/jenkins/manifests/params.pp | 82 ++++++++++++++ modules/jenkins/manifests/slave.pp | 118 ++++++++++++-------- modules/openstack_project/manifests/base.pp | 52 +++++---- 3 files changed, 184 insertions(+), 68 deletions(-) create mode 100644 modules/jenkins/manifests/params.pp diff --git a/modules/jenkins/manifests/params.pp b/modules/jenkins/manifests/params.pp new file mode 100644 index 0000000000..e17b45f415 --- /dev/null +++ b/modules/jenkins/manifests/params.pp @@ -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).") + } + } +} diff --git a/modules/jenkins/manifests/slave.pp b/modules/jenkins/manifests/slave.pp index 1e0208baf6..9aa85cdf82 100644 --- a/modules/jenkins/manifests/slave.pp +++ b/modules/jenkins/manifests/slave.pp @@ -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', - } } diff --git a/modules/openstack_project/manifests/base.pp b/modules/openstack_project/manifests/base.pp index c7c73c0241..a31d5e4562 100644 --- a/modules/openstack_project/manifests/base.pp +++ b/modules/openstack_project/manifests/base.pp @@ -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