aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2010-12-08 22:24:24 -0500
committerMicah Anderson <micah@riseup.net>2010-12-08 22:24:24 -0500
commitfbb291ed19eeb9a64d4aed78c48d221315da7866 (patch)
treeb13729bc1da7bc7d7c72bc11a5531782d4a31f01
parentd9ccf2a99b4af1430ba6fecdecde9737d89fa674 (diff)
downloadpuppet-apt-fbb291ed19eeb9a64d4aed78c48d221315da7866.tar.gz
puppet-apt-fbb291ed19eeb9a64d4aed78c48d221315da7866.tar.bz2
add apticron support.
Why apticron, when we have cron-apt already? Some people have different preferences, we use apticron along with the upgrade_package functionality in this module. I know someone who uses cron-apt to run the upgrades, but apticron for notifications, because apticron's notifications are much nicer (cron-apt just gives you the output of apt-get upgrade)
-rw-r--r--README18
-rw-r--r--manifests/apticron.pp54
-rw-r--r--templates/Debian/apticron_lenny.erb46
-rw-r--r--templates/Debian/apticron_squeeze.erb75
4 files changed, 193 insertions, 0 deletions
diff --git a/README b/README
index 109c92a..355379b 100644
--- a/README
+++ b/README
@@ -162,6 +162,24 @@ The apt class sets up most of the documented functionality. To use
functionality that is not enabled by default, you must include one of
the following classes.
+apt::apticron
+-------------
+
+When you include this class, apticron will be installed, with the following
+defaults, which you are free to change before you include the class:
+
+ $apticron_ensure_version = "present"
+ $apticron_email = "root"
+ $apticron_config = "apt/${operatingsystem}/apticron_${lsbrelease}.erb"
+ $apticron_diff_only = "1"
+ $apticron_listchanges_profile = "apticron"
+ $apticron_system = false
+ $apticron_ipaddressnum = false
+ $apticron_ipaddresses = false
+ $apticron_notifyholds = "0"
+ $apticron_notifynew = "0"
+ $apticron_customsubject = ""
+
apt::cron::download
-------------------
diff --git a/manifests/apticron.pp b/manifests/apticron.pp
new file mode 100644
index 0000000..7f834a5
--- /dev/null
+++ b/manifests/apticron.pp
@@ -0,0 +1,54 @@
+class apt::apticron {
+
+ case $apticron_ensure_version {
+ '': { $apticron_ensure_version = "present" }
+ }
+
+ case $apticron_config {
+ '': { $apticron_config = "apt/${operatingsystem}/apticron_${lsbrelease}.erb" }
+ }
+
+ case $apticron_email {
+ '': { $apticron_email = "root" }
+ }
+
+ case $apticron_diff_only {
+ '': { $apticron_diff_only = "1" }
+ }
+
+ case $apticron_listchanges_profile {
+ '': { $apticron_listchanges_profile = "apticron" }
+ }
+
+ case $apticron_system {
+ '': { $apticron_system = false }
+ }
+
+ case $apticron_ipaddressnum {
+ '': { $apticron_ipaddressnum = false }
+ }
+
+ case $apticron_ipaddresses {
+ '': { $apticron_ipaddresses = false }
+ }
+
+ case $apticron_notifyholds {
+ '': { $apticron_notifyholds = "0" }
+ }
+
+ case $apticron_notifynew {
+ '': { $apticron_notifynew = "0" }
+ }
+
+ case $apticron_customsubject {
+ '': { $apticron_customsubject = "" }
+ }
+
+ package { apticron: ensure => $apticron_ensure_version }
+
+ file { "/etc/apticron/apticron.conf":
+ content => template($apticron_config),
+ mode => 0644, owner => root, group => root,
+ require => Package["apticron"];
+ }
+}
diff --git a/templates/Debian/apticron_lenny.erb b/templates/Debian/apticron_lenny.erb
new file mode 100644
index 0000000..9505633
--- /dev/null
+++ b/templates/Debian/apticron_lenny.erb
@@ -0,0 +1,46 @@
+# apticron.conf
+#
+# set EMAIL to a list of addresses which will be notified of impending updates
+#
+EMAIL="<%= apticron_email %>"
+
+#
+# Set DIFF_ONLY to "1" to only output the difference of the current run
+# compared to the last run (ie. only new upgrades since the last run). If there
+# are no differences, no output/email will be generated. By default, apticron
+# will output everything that needs to be upgraded.
+#
+DIFF_ONLY="<%= apticron_diff_only %>"
+
+#
+# Set LISTCHANGES_PROFILE if you would like apticron to invoke apt-listchanges
+# with the --profile option. You should add a corresponding profile to
+# /etc/apt/listchanges.conf
+#
+LISTCHANGES_PROFILE="<%= apticron_listchanges_profile %>"
+
+#
+# Set SYSTEM if you would like apticron to use something other than the output
+# of "hostname -f" for the system name in the mails it generates
+#
+# SYSTEM="foobar.example.com"
+<%- if has_variable?(apticron_system) and instance_variable_get("@#{apticron_system}").to_s != "false" -%>
+<%= 'SYSTEM="' + instance_variable_get("@#{apticron_system}").to_s + '"' %>
+
+#
+# Set IPADDRESSNUM if you would like to configure the maximal number of IP
+# addresses apticron displays. The default is to display 1 address of each
+# family type (inet, inet6), if available.
+#
+# IPADDRESSNUM="1"
+<%- if has_variable?(apticron_ipaddressnum) and instance_variable_get("@#{apticron_ipaddressnum}").to_s != "false" -%>
+<%= 'IPADDRESSNUM="' + instance_variable_get("@#{apticron_ipaddressnum}").to_s + '"' %>
+
+#
+# Set IPADDRESSES to a whitespace seperated list of reachable addresses for
+# this system. By default, apticron will try to work these out using the
+# "ip" command
+#
+# IPADDRESSES="192.0.2.1 2001:db8:1:2:3::1"
+<%- if has_variable?(apticron_ipaddresses) and instance_variable_get("@#{apticron_ipaddresses}").to_s != "false" -%>
+<%= 'IPADDRESSES="' + instance_variable_get("@#{apticron_ipaddresses}").to_s + '"' %>
diff --git a/templates/Debian/apticron_squeeze.erb b/templates/Debian/apticron_squeeze.erb
new file mode 100644
index 0000000..274f14d
--- /dev/null
+++ b/templates/Debian/apticron_squeeze.erb
@@ -0,0 +1,75 @@
+# apticron.conf
+#
+# set EMAIL to a space separated list of addresses which will be notified of
+# impending updates
+#
+EMAIL="<%= apticron_email %>"
+
+#
+# Set DIFF_ONLY to "1" to only output the difference of the current run
+# compared to the last run (ie. only new upgrades since the last run). If there
+# are no differences, no output/email will be generated. By default, apticron
+# will output everything that needs to be upgraded.
+#
+DIFF_ONLY="<%= apticron_diff_only %>"
+
+#
+# Set LISTCHANGES_PROFILE if you would like apticron to invoke apt-listchanges
+# with the --profile option. You should add a corresponding profile to
+# /etc/apt/listchanges.conf
+#
+LISTCHANGES_PROFILE="<%= apticron_listchanges_profile %>"
+
+#
+# Set SYSTEM if you would like apticron to use something other than the output
+# of "hostname -f" for the system name in the mails it generates
+#
+# SYSTEM="foobar.example.com"
+<%- if has_variable?(apticron_system) and instance_variable_get("@#{apticron_system}").to_s != "false" -%>
+<%= 'SYSTEM="' + instance_variable_get("@#{apticron_system}").to_s + '"' %>
+
+#
+# Set IPADDRESSNUM if you would like to configure the maximal number of IP
+# addresses apticron displays. The default is to display 1 address of each
+# family type (inet, inet6), if available.
+#
+# IPADDRESSNUM="1"
+<%- if has_variable?(apticron_ipaddressnum) and instance_variable_get("@#{apticron_ipaddressnum}").to_s != "false" -%>
+<%= 'IPADDRESSNUM="' + instance_variable_get("@#{apticron_ipaddressnum}").to_s + '"' %>
+
+#
+# Set IPADDRESSES to a whitespace separated list of reachable addresses for
+# this system. By default, apticron will try to work these out using the
+# "ip" command
+#
+# IPADDRESSES="192.0.2.1 2001:db8:1:2:3::1"
+<%- if has_variable?(apticron_ipaddresses) and instance_variable_get("@#{apticron_ipaddresses}").to_s != "false" -%>
+<%= 'IPADDRESSES="' + instance_variable_get("@#{apticron_ipaddresses}").to_s + '"' %>
+
+#
+# Set NOTIFY_HOLDS="0" if you don't want to be notified about new versions of
+# packages on hold in your system. The default behavior is downloading and
+# listing them as any other package.
+#
+# NOTIFY_HOLDS="0"
+NOTIFY_HOLDS="<%= apticron_notifyholds %>"
+
+#
+# Set NOTIFY_NEW="0" if you don't want to be notified about packages which
+# are not installed in your system. Yes, it's possible! There are some issues
+# related to systems which have mixed stable/unstable sources. In these cases
+# apt-get will consider for example that packages with "Priority:
+# required"/"Essential: yes" in unstable but not in stable should be installed,
+# so they will be listed in dist-upgrade output. Please take a look at
+# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=531002#44
+#
+# NOTIFY_NEW="0"
+NOTIFY_NEW="<%= apticron_notifynew %>"
+
+#
+# Set CUSTOM_SUBJECT if you want to replace the default subject used in
+# the notification e-mails. This may help filtering/sorting client-side e-mail.
+#
+# CUSTOM_SUBJECT=""
+CUSTOM_SUBJECT="<%= apticron_customsubject %>"
+