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