]> gitweb.fluxo.info Git - puppet-apt.git/commitdiff
New class: apt::dist_upgrade::initiator.
authorintrigeri <intrigeri@boum.org>
Thu, 16 Dec 2010 12:03:08 +0000 (13:03 +0100)
committerintrigeri <intrigeri@boum.org>
Thu, 16 Dec 2010 12:03:08 +0000 (13:03 +0100)
This implements the "update initiator" pattern suggested by
http://projects.puppetlabs.com/projects/puppet/wiki/Debian_Patterns.

This feature is useful when one does not want to setup a fully automated upgrade
process but still needs a way to manually trigger full upgrades of any number of
systems at scheduled times.

README
files/upgrade_initiator [new file with mode: 0644]
manifests/dist_upgrade/initiator.pp [new file with mode: 0644]

diff --git a/README b/README
index 8503e7348554c3d5683849e273ab78b57b384349..61ffb1da0b1e98439ae0f0411c9a226d706f9daa 100644 (file)
--- a/README
+++ b/README
@@ -213,7 +213,31 @@ dist-upgrade's the system.
 This exec is set as refreshonly so including this class does not
 trigger any action per-se: other resources may notify it, other
 classes may inherit from this one and add to its subscription list
-using the plusignment ('+>') operator.
+using the plusignment ('+>') operator. A real-world example can be
+seen in the apt::dist_upgrade::initiator source.
+
+When this class is included the APT indexes are updated on every
+Puppet run due to the author's lack of Puppet wizardry.
+
+apt::dist_upgrade::initiator
+----------------------------
+
+This class automatically dist-upgrade's the system when an initiator
+file's content changes. The initiator file is copied from the first
+available source amongst the following ones, in decreasing priority
+order:
+
+- puppet:///site-apt/${fqdn}/upgrade_initiator
+- puppet:///site-apt/upgrade_initiator
+- puppet:///apt/upgrade_initiator
+
+This is useful when one does not want to setup a fully automated
+upgrade process but still needs a way to manually trigger full
+upgrades of any number of systems at scheduled times.
+
+Beware: a dist-upgrade is triggered the first time Puppet runs after
+this class has been included. This is actually the single reason why
+this class is not enabled by default.
 
 When this class is included the APT indexes are updated on every
 Puppet run due to the author's lack of Puppet wizardry.
diff --git a/files/upgrade_initiator b/files/upgrade_initiator
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/manifests/dist_upgrade/initiator.pp b/manifests/dist_upgrade/initiator.pp
new file mode 100644 (file)
index 0000000..6d57947
--- /dev/null
@@ -0,0 +1,23 @@
+class apt::dist_upgrade::initiator inherits apt::dist_upgrade {
+
+  $initiator = 'upgrade_initiator'
+  $initiator_abs = "${apt::apt_base_dir}/${initiator}"
+
+  file { 'apt_upgrade_initiator':
+    mode     => 0644,
+    owner    => root,
+    group    => 0,
+    path     => "${initiator_abs}",
+    checksum => md5,
+    source   => [
+                 "puppet:///modules/site-apt/${fqdn}/${initiator}",
+                 "puppet:///modules/site-apt/${initiator}",
+                 "puppet:///modules/apt/${initiator}",
+                ],
+  }
+
+  Exec['apt_dist-upgrade'] {
+    subscribe +> File['apt_upgrade_initiator'],
+  }
+
+}