diff --git a/files/cgroups/upstart_cgconfig b/files/cgroups/upstart_cgconfig new file mode 100644 index 0000000..80a12e0 --- /dev/null +++ b/files/cgroups/upstart_cgconfig @@ -0,0 +1,6 @@ +description "load legacy cgconfig files" +author "Jeremy Stanley " +start on started cgroup-lite +pre-start script + /usr/sbin/cgconfigparser -l /etc/cgconfig.conf +end script diff --git a/files/cgroups/upstart_cgred b/files/cgroups/upstart_cgred new file mode 100644 index 0000000..b6802f2 --- /dev/null +++ b/files/cgroups/upstart_cgred @@ -0,0 +1,6 @@ +description "launch cgrulesengd" +author "Jeremy Stanley " +start on started cgconfig +pre-start script + /usr/sbin/cgrulesengd +end script diff --git a/manifests/cgroups.pp b/manifests/cgroups.pp index 91b936d..e8573d3 100644 --- a/manifests/cgroups.pp +++ b/manifests/cgroups.pp @@ -27,17 +27,64 @@ class jenkins::cgroups { source => 'puppet:///modules/jenkins/cgroups/cgrules.conf', } + # Starting with Ubuntu Quantal (12.10) cgroup-bin dropped its upstart jobs. + if $::operatingsystem == 'Ubuntu' { + + if $::operatingsystemrelease >= '12.10' { + + file { '/etc/init/cgconfig.conf': + ensure => present, + replace => true, + owner => 'root', + group => 'root', + mode => '0644', + source => 'puppet:///modules/jenkins/cgroups/upstart_cgconfig', + } + + file { '/etc/init.d/cgconfig': + ensure => link, + target => '/lib/init/upstart-job', + } + + file { '/etc/init/cgred.conf': + ensure => present, + replace => true, + owner => 'root', + group => 'root', + mode => '0644', + source => 'puppet:///modules/jenkins/cgroups/upstart_cgred', + } + + file { '/etc/init.d/cgred': + ensure => link, + target => '/lib/init/upstart-job', + } + + } else { + + file { '/etc/init/cgconfig.conf': + ensure => present, + } + + file { '/etc/init/cgred.conf': + ensure => present, + } + + } + + } + service { 'cgconfig': ensure => running, enable => true, - require => Package['cgroups'], + require => $::jenkins::params::cgconfig_require, subscribe => File['/etc/cgconfig.conf'], } service { 'cgred': ensure => running, enable => true, - require => Package['cgroups'], + require => $::jenkins::params::cgred_require, subscribe => File['/etc/cgrules.conf'], } } diff --git a/manifests/params.pp b/manifests/params.pp index a4f7ba8..3260f86 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -44,6 +44,8 @@ class jenkins::params { $xslt_package = 'libxslt' $xvfb_package = 'xorg-x11-server-Xvfb' $cgroups_package = 'libcgroup' + $cgconfig_require = Package['cgroups'] + $cgred_require = Package['cgroups'] } 'Debian', 'Ubuntu': { # common packages @@ -82,6 +84,14 @@ class jenkins::params { $xslt_package = 'xsltproc' $xvfb_package = 'xvfb' $cgroups_package = 'cgroup-bin' + $cgconfig_require = [ + Package['cgroups'], + File['/etc/init/cgconfig.conf'], + ] + $cgred_require = [ + Package['cgroups'], + File['/etc/init/cgred.conf'], + ] } default: { fail("Unsupported osfamily: ${::osfamily} The 'jenkins' module only supports osfamily Ubuntu or Redhat(slaves only).") diff --git a/templates/cgconfig.erb b/templates/cgconfig.erb index 6236ca8..c2639be 100644 --- a/templates/cgconfig.erb +++ b/templates/cgconfig.erb @@ -11,7 +11,7 @@ mount { blkio = /cgroup/blkio; } -<% else %> +<% elsif ( operatingsystemrelease < '12.10' ) or ( operatingsystem != 'Ubuntu' ) then %> mount { cpu = /sys/fs/cgroup/cpu; cpuacct = /sys/fs/cgroup/cpuacct;