Hashar has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/59611


Change subject: convert package-builder to a module
......................................................................

convert package-builder to a module

* migrates misc/package-builder.pp to the 'pbuilder' module
* new role::package-builder
* deprecated misc::package-builder loads the role class and logs a
  server side warning.
* changed gallium node definition to use the new role.

Change-Id: I8ca870141109e29ef525eb23188e4989aaa8146b
---
M manifests/misc/package-builder.pp
A manifests/role/package-builder.pp
M manifests/site.pp
M modules/contint/manifests/packages.pp
A modules/pbuilder/manifests/defaults.pp
A modules/pbuilder/manifests/init.pp
A modules/pbuilder/manifests/packages.pp
7 files changed, 202 insertions(+), 187 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/11/59611/1

diff --git a/manifests/misc/package-builder.pp 
b/manifests/misc/package-builder.pp
index eb56014..2b04fd4 100644
--- a/manifests/misc/package-builder.pp
+++ b/manifests/misc/package-builder.pp
@@ -1,188 +1,7 @@
-# misc/package-builder.pp
-
 class misc::package-builder {
-       system_role { "misc::package-builder": description => "Debian package 
builder" }
 
-       class packages {
-               package { [
-                       "build-essential",
-                       "fakeroot",
-                       "debhelper",
-                       "git-buildpackage",
-                       "dupload",
-                       "libio-socket-ssl-perl",
-                       "libcrypt-ssleay-perl",
-                       "quilt",
-                       "cdbs",
-                       ]: ensure => latest;
-               }
-       }
+  # Server side warning to find out deprecated usages
+  warning("misc::package-builder is deprecated, please use 
role::package-builder")
 
-       class defaults {
-               File { mode => 0444 }
-
-               file {
-                       "/etc/devscripts.conf":
-                               content => template("misc/devscripts.conf.erb");
-                       "/etc/git-buildpackage/gbp.conf":
-                               require => Package["git-buildpackage"],
-                               content => template("misc/gbp.conf.erb");
-                       "/etc/dupload.conf":
-                               require => Package["dupload"],
-                               content => template("misc/dupload.conf.erb");
-               }
-       }
-
-       # == Define: image
-       #
-       # Creates a Debian distribution image
-       #
-       # === Parameters:
-       #
-       # [*namevar*]
-       #  The title will be split by dashes, the first part will be used to 
set the
-       #  *pbuilder* parameter unless it has been set, the second part is used 
to set
-       #  the *dist* parameter unless it has been set. Hence
-       #  'cowbuilder-precise-foobar' will ends up selecting the cowbuilder 
builder
-       #  and generate an image for the Precise distribution.
-       #
-       # [*pbuilder*]
-       #  The building program to use, either 'cowbuilder' or 'pbuilder'. 
Anything
-       #  else WILL force puppet to raise a failure.
-       #  *pbuilder* is not set by default which means the distribution will be
-       #  interpolated from the defined title (see *namevar*).
-       #
-       # [*dist*]
-       #  The distribution to build for (hardy, lucid, precise..).  *dist* is 
not
-       #  set by default which means the distribution will be interpolated 
from the
-       #  defined title (see *namevar*).
-       #
-       # === Examples
-       #
-       # Creating an image for cowbuilder and the raring distribution:
-       #
-       #   image { 'raring image for cowbuilder':
-       #     pbuilder => 'cowbuilder',
-       #     dist    => 'raring',
-       #   }
-       #
-       # Using title interpolation to generate cowbuilder images for both
-       # precise and lucid:
-       #
-       #   $images = [ 'cowbuilder-precise', 'cowbuilder-lucid' ],
-       #   image { $images: }
-       #
-       define image( $pbuilder=undef, $dist=undef ) {
-               if $pbuilder {
-                       $realpbuilder = $pbuilder
-               } else {
-                       $realpbuilder = values_at(split($title, '-',0))
-               }
-               if $dist {
-                       $realdist = $dist
-               } else {
-                       $realdist = values_at(split($title, '-'),1)
-               }
-
-               notify { "Creating image $title (distribution: $realdist, 
pbuilder: $realpbuilder)": }
-
-               require packages
-
-               case $realpbuilder {
-                       cowbuilder: {
-                               $base_option = '--basepath'
-                               $file_prefix = 'base-'
-                               $file_ext    = 'cow'
-                               $packages    = [ 'cowbuilder' ]
-                       }
-                       pbuilder: {
-                               $base_option = '--basetgz'
-                               $file_prefix = ''
-                               $file_ext    = 'tgz'
-                               $packages    = [ 'pbuilder' ]
-                       }
-                       default: { fail('Only package builder types supported 
are pbuilder and cowbuilder') }
-               }
-
-               $pbuilder_root = "/var/cache/pbuilder"
-
-               $othermirror = "--othermirror 'deb 
http://apt.wikimedia.org/wikimedia ${realdist}-wikimedia main universe' 
--othermirror 'deb-src http://apt.wikimedia.org/wikimedia ${realdist}-wikimedia 
main universe'"
-               $components = "--components 'main universe'"
-               $image_file = 
"${pbuilder_root}/${file_prefix}${realdist}.${file_ext}"
-
-               exec { "imaging $realdist for $realpbuilder":
-                       command => "$realpbuilder --create --distribution 
${realdist} ${base_option} ${image_file} ${components} ${othermirror}",
-                       creates => $image_file,
-                       path => "/bin:/sbin:/usr/bin:/usr/sbin",
-                       timeout => 600,
-                       logoutput => on_failure,
-               }
-       }
-
-       # == Define: pbuilder
-       # Instantiate a debian packaging builder (such as pbuilder and 
cowbuilder) as
-       # well as their distribution images.
-       #
-       # === Parameters:
-       # [*namevar*]
-       #  The name of the builder to use. Must be either 'cowbuilder' or 
'pbuilder'.
-       #  This must be a valid command name.  Defaults to 'pbuilder'.
-       #
-       # [*dists*]
-       #  Array of distribution names to uses. Defaults to 
['hardy','lucid','precise']
-       #
-       # [*defaultdist*]
-       #  The default distribution to setup for the builder. Defaults to 
'lucid'.
-       #
-       # === Examples
-       #
-       # Instancing cowbuilder for 'precise':
-       #
-       #   pbuilder { 'cowbuilder':
-       #     dists => 'precise',
-       #     defaultdist => 'precise',
-       #   }
-       #
-       # Instancing both pbuilder and cowbuilder:
-       #
-       #   pbuilder { 'cowbuilder': }
-       #   pbuilder { 'pbuilder': }
-       #
-       define pbuilder( $dists=["lucid", "precise"], $defaultdist="lucid") {
-               $pbuilder = $title
-               notify { "Calling package builder '${pbuilder}' on 
distributions '${dists}'": }
-
-               package { $pbuilder: ensure => latest }
-
-               # Craft unique image titles such as cowbuilder-precise
-               $images = prefix($dists, "${pbuilder}-")
-               image { $images:
-                       pbuilder => $pbuilder,
-               }
-
-               case $pbuilder {
-                       cowbuilder: {
-                               $file_prefix = 'base-'
-                               $file_ext = 'cow'
-                       }
-                       pbuilder: {
-                               $file_prefix = ''
-                               $file_ext = 'tgz'
-                       }
-                       default: {
-                               fail('Only package builder types supported are 
pbuilder and cowbuilder')
-                       }
-               }
-
-               file { "/var/cache/pbuilder/base.${file_ext}":
-                       require => Image["${title}-${defaultdist}"],
-                       ensure => 
"/var/cache/pbuilder/${file_prefix}${defaultdist}.${file_ext}"
-               }
-       }
-
-       include packages, defaults
-
-       pbuilder { 'cowbuilder': }
-       pbuilder { 'pbuilder': }
-
+  include role::package-builder
 }
diff --git a/manifests/role/package-builder.pp 
b/manifests/role/package-builder.pp
new file mode 100644
index 0000000..6c5fa52
--- /dev/null
+++ b/manifests/role/package-builder.pp
@@ -0,0 +1,7 @@
+class role::package-builder {
+  system_role { 'role::package-builder': description => 'Debian package 
builder' }
+
+  pbuilder { 'cowbuilder': }
+  pbuilder { 'pbuilder': }
+
+}
diff --git a/manifests/site.pp b/manifests/site.pp
index 470f3b9..6e3e2dc 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -922,6 +922,7 @@
                misc::contint::test::jenkins,
                misc::contint::android::sdk,
                role::jenkins::master::production,
+    role::package-builder,
                role::zuul::production,
                admins::roots,
                admins::jenkins
diff --git a/modules/contint/manifests/packages.pp 
b/modules/contint/manifests/packages.pp
index daad6e9..71d12ef 100644
--- a/modules/contint/manifests/packages.pp
+++ b/modules/contint/manifests/packages.pp
@@ -9,9 +9,6 @@
   # Get perl dependencies so we can lint the wikibugs perl script
   include misc::irc::wikibugs::packages
 
-  # Let us create packages from Jenkins jobs
-  include misc::package-builder
-
   include svn::client
 
   # PHP related packages
diff --git a/modules/pbuilder/manifests/defaults.pp 
b/modules/pbuilder/manifests/defaults.pp
new file mode 100644
index 0000000..d2b0134
--- /dev/null
+++ b/modules/pbuilder/manifests/defaults.pp
@@ -0,0 +1,22 @@
+class pbuilder::defaults {
+
+  require packages
+
+  File { mode => 0444 }
+
+  file {
+    '/etc/devscripts.conf':
+      content => template('misc/devscripts.conf.erb');
+  }
+  file {
+    '/etc/git-buildpackage/gbp.conf':
+      require => Package['git-buildpackage'],
+      content => template('misc/gbp.conf.erb');
+  }
+  file {
+    '/etc/dupload.conf':
+      require => Package['dupload'],
+      content => template('misc/dupload.conf.erb');
+  }
+
+}
diff --git a/modules/pbuilder/manifests/init.pp 
b/modules/pbuilder/manifests/init.pp
new file mode 100644
index 0000000..eadf8bc
--- /dev/null
+++ b/modules/pbuilder/manifests/init.pp
@@ -0,0 +1,153 @@
+class pbuilder {
+
+  include packages
+  include defaults
+
+       # == Define: image
+       #
+       # Creates a Debian distribution image
+       #
+       # === Parameters:
+       #
+       # [*namevar*]
+       #  The title will be split by dashes, the first part will be used to 
set the
+       #  *pbuilder* parameter unless it has been set, the second part is used 
to set
+       #  the *dist* parameter unless it has been set. Hence
+       #  'cowbuilder-precise-foobar' will ends up selecting the cowbuilder 
builder
+       #  and generate an image for the Precise distribution.
+       #
+       # [*pbuilder*]
+       #  The building program to use, either 'cowbuilder' or 'pbuilder'. 
Anything
+       #  else WILL force puppet to raise a failure.
+       #  *pbuilder* is not set by default which means the distribution will be
+       #  interpolated from the defined title (see *namevar*).
+       #
+       # [*dist*]
+       #  The distribution to build for (hardy, lucid, precise..).  *dist* is 
not
+       #  set by default which means the distribution will be interpolated 
from the
+       #  defined title (see *namevar*).
+       #
+       # === Examples
+       #
+       # Creating an image for cowbuilder and the raring distribution:
+       #
+       #   image { 'raring image for cowbuilder':
+       #     pbuilder => 'cowbuilder',
+       #     dist    => 'raring',
+       #   }
+       #
+       # Using title interpolation to generate cowbuilder images for both
+       # precise and lucid:
+       #
+       #   $images = [ 'cowbuilder-precise', 'cowbuilder-lucid' ],
+       #   image { $images: }
+       #
+       define image( $pbuilder=undef, $dist=undef ) {
+               if $pbuilder {
+                       $realpbuilder = $pbuilder
+               } else {
+                       $realpbuilder = values_at(split($title, '-',0))
+               }
+               if $dist {
+                       $realdist = $dist
+               } else {
+                       $realdist = values_at(split($title, '-'),1)
+               }
+
+               notify { "Creating image $title (distribution: $realdist, 
pbuilder: $realpbuilder)": }
+
+               require packages
+
+               case $realpbuilder {
+                       cowbuilder: {
+                               $base_option = '--basepath'
+                               $file_prefix = 'base-'
+                               $file_ext    = 'cow'
+                               $packages    = [ 'cowbuilder' ]
+                       }
+                       pbuilder: {
+                               $base_option = '--basetgz'
+                               $file_prefix = ''
+                               $file_ext    = 'tgz'
+                               $packages    = [ 'pbuilder' ]
+                       }
+                       default: { fail('Only package builder types supported 
are pbuilder and cowbuilder') }
+               }
+
+               $pbuilder_root = "/var/cache/pbuilder"
+
+               $othermirror = "--othermirror 'deb 
http://apt.wikimedia.org/wikimedia ${realdist}-wikimedia main universe' 
--othermirror 'deb-src http://apt.wikimedia.org/wikimedia ${realdist}-wikimedia 
main universe'"
+               $components = "--components 'main universe'"
+               $image_file = 
"${pbuilder_root}/${file_prefix}${realdist}.${file_ext}"
+
+               exec { "imaging $realdist for $realpbuilder":
+                       command => "$realpbuilder --create --distribution 
${realdist} ${base_option} ${image_file} ${components} ${othermirror}",
+                       creates => $image_file,
+                       path => "/bin:/sbin:/usr/bin:/usr/sbin",
+                       timeout => 600,
+                       logoutput => on_failure,
+               }
+       }
+
+       # == Define: pbuilder
+       # Instantiate a debian packaging builder (such as pbuilder and 
cowbuilder) as
+       # well as their distribution images.
+       #
+       # === Parameters:
+       # [*namevar*]
+       #  The name of the builder to use. Must be either 'cowbuilder' or 
'pbuilder'.
+       #  This must be a valid command name.  Defaults to 'pbuilder'.
+       #
+       # [*dists*]
+       #  Array of distribution names to uses. Defaults to 
['hardy','lucid','precise']
+       #
+       # [*defaultdist*]
+       #  The default distribution to setup for the builder. Defaults to 
'lucid'.
+       #
+       # === Examples
+       #
+       # Instancing cowbuilder for 'precise':
+       #
+       #   pbuilder { 'cowbuilder':
+       #     dists => 'precise',
+       #     defaultdist => 'precise',
+       #   }
+       #
+       # Instancing both pbuilder and cowbuilder:
+       #
+       #   pbuilder { 'cowbuilder': }
+       #   pbuilder { 'pbuilder': }
+       #
+       define pbuilder( $dists=["lucid", "precise"], $defaultdist="lucid") {
+               $pbuilder = $title
+               notify { "Calling package builder '${pbuilder}' on 
distributions '${dists}'": }
+
+               package { $pbuilder: ensure => latest }
+
+               # Craft unique image titles such as cowbuilder-precise
+               $images = prefix($dists, "${pbuilder}-")
+               image { $images:
+                       pbuilder => $pbuilder,
+               }
+
+               case $pbuilder {
+                       cowbuilder: {
+                               $file_prefix = 'base-'
+                               $file_ext = 'cow'
+                       }
+                       pbuilder: {
+                               $file_prefix = ''
+                               $file_ext = 'tgz'
+                       }
+                       default: {
+                               fail('Only package builder types supported are 
pbuilder and cowbuilder')
+                       }
+               }
+
+               file { "/var/cache/pbuilder/base.${file_ext}":
+                       require => Image["${title}-${defaultdist}"],
+                       ensure => 
"/var/cache/pbuilder/${file_prefix}${defaultdist}.${file_ext}"
+               }
+       }
+
+}
diff --git a/modules/pbuilder/manifests/packages.pp 
b/modules/pbuilder/manifests/packages.pp
new file mode 100644
index 0000000..fc6779a
--- /dev/null
+++ b/modules/pbuilder/manifests/packages.pp
@@ -0,0 +1,16 @@
+class pbuilder::packages {
+
+  package { [
+    'build-essential',
+    'cdbs',
+    'debhelper',
+    'dupload',
+    'fakeroot',
+    'git-buildpackage',
+    'libcrypt-ssleay-perl',
+    'libio-socket-ssl-perl',
+    'quilt',
+  ]: ensure => latest;
+  }
+
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/59611
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8ca870141109e29ef525eb23188e4989aaa8146b
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Hashar <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to