]> gitweb.fluxo.info Git - puppet-apt.git/commitdiff
add the preseeded_package define which simplifies apt preseeding
authorMicah Anderson <micah@riseup.net>
Mon, 29 Sep 2008 17:39:18 +0000 (13:39 -0400)
committerMicah Anderson <micah@riseup.net>
Mon, 29 Sep 2008 17:39:18 +0000 (13:39 -0400)
automatically making sure that the preseeding directories are present
and pulling the seed file from templates/$debian_version/$name.seeds
which enables you to define things such as:

apt::preseeded_package { [ locales, popularity-contest, apt-listchanges, apticron]: }

and the .seed files will be automatically pulled and populated

manifests/init.pp

index 3128a924b3cc596ee3f44c2622c7d1811fa5d0ad..77d5a7fbfb569000013534c631221724adcc1c3e 100644 (file)
@@ -133,8 +133,55 @@ class apt {
             }
           }
         }
-}
+
+        # workaround for preseeded_package component
+        file { "/var/cache": ensure => directory }
+        file { "/var/cache/local": ensure => directory }
+        file { "/var/cache/local/preseeding/": ensure => directory }
+
+        define preseeded_package ($content = "", $ensure = "installed") {
+          $seedfile = "/var/cache/local/preseeding/$name.seeds"
+          $real_content = $content ? {
+            "" => template ( "$debian_version/$name.seeds" ),
+            Default => $content
+          }
+  
+          file{ $seedfile:
+            content => $real_content,
+            mode => 0600, owner => root, group => root,
+          }
+  
+          package { $name:
+            ensure => $ensure,
+            responsefile => $seedfile,
+            require => File[$seedfile],
+          }
+        }
+
+        # workaround for preseeded_package component
+        file { "/var/cache": ensure => directory }
+        file { "/var/cache/local": ensure => directory }
+        file { "/var/cache/local/preseeding/": ensure => directory }
         
+        define preseeded_package ($content = "", $ensure = "installed") {
+          $seedfile = "/var/cache/local/preseeding/$name.seeds"
+          $real_content = $content ? {
+            "" => template ( "$debian_version/$name.seeds" ),
+            Default => $content
+          }
+          
+          file{ $seedfile:
+            content => $real_content,
+            mode => 0600, owner => root, group => root,
+          }
+          
+          package { $name:
+            ensure => $ensure,
+            responsefile => $seedfile,
+            require => File[$seedfile],
+          }
+        }
+}       
 
 class dselect {
        # suppress annoying help texts of dselect