Store the list of installed packages into a puppet fact
authorPaul Wise <pabs@debian.org>
Fri, 31 May 2019 03:52:21 +0000 (11:52 +0800)
committerPaul Wise <pabs@debian.org>
Fri, 31 May 2019 04:00:40 +0000 (12:00 +0800)
modules/debian_org/files/apt.conf.d/local-pkglist [new file with mode: 0644]
modules/debian_org/lib/facter/pkglist.rb [new file with mode: 0644]
modules/debian_org/manifests/apt.pp

diff --git a/modules/debian_org/files/apt.conf.d/local-pkglist b/modules/debian_org/files/apt.conf.d/local-pkglist
new file mode 100644 (file)
index 0000000..4cf907c
--- /dev/null
@@ -0,0 +1,6 @@
+//
+// THIS FILE IS UNDER PUPPET CONTROL. DON'T EDIT IT HERE.
+// USE: git clone git+ssh://$USER@puppet.debian.org/srv/puppet.debian.org/git/dsa-puppet.git
+//
+
+DPkg::Post-Invoke { "cd /var/lib/misc/thishost/ ; dpkg-query -W -f '${Package}\n' > pkglist.tmp ; mv pkglist.tmp pkglist"; };
diff --git a/modules/debian_org/lib/facter/pkglist.rb b/modules/debian_org/lib/facter/pkglist.rb
new file mode 100644 (file)
index 0000000..2609d40
--- /dev/null
@@ -0,0 +1,9 @@
+pkglist = '/var/lib/misc/thishost/pkglist'
+
+if FileTest.exist?(pkglist)
+       Facter.add('pkglist') do
+               setcode do
+                       open(pkglist).read().split("\n").join(' ')
+               end
+       end
+end
index 62feca2..d52005f 100644 (file)
@@ -132,6 +132,14 @@ class debian_org::apt {
        file { '/etc/apt/apt.conf.d/local-cainfo':
                source => 'puppet:///modules/debian_org/apt.conf.d/local-cainfo',
        }
+       file { '/etc/apt/apt.conf.d/local-pkglist':
+               source => 'puppet:///modules/debian_org/apt.conf.d/local-pkglist',
+       }
+
+       exec { 'dpkg list':
+               command => 'dpkg-query -W -f \'${Package}\n\' > /var/lib/misc/thishost/pkglist',
+               creates => '/var/lib/misc/thishost/pkglist',
+       }
 
        exec { 'apt-get update':
                path    => '/usr/bin:/usr/sbin:/bin:/sbin',