Re: [Puppet Users] Puppet + APT, I am lost...

Martijn Grendelman
Mon, 06 Sep 2010 09:19:03 -0000

On 05-09-10 12:02, Marcin Owsiany wrote:
> On Tue, Aug 31, 2010 at 04:03:35PM +0200, Martijn Grendelman wrote:
>> What I would like, is for Puppet to run `aptitude update` before it
>> installs or upgrades packages.
>
> FYI you''re likely to encounter problems when using aptitude
provider for
> package management. See Debian bugs #445034 #445035

Thanks. The former is not really important to me, since I never use
aptitude that way. The latter is probably a little more tricky, but at
least the ''unknown package'' case is handled by Puppet itself:

# Yay, stupid aptitude doesn''t throw an error when the package is
missing.
if args.include?(:install) and output =~ /Couldn''t find any package/
  raise Puppet::Error.new(
    "Could not find package #{self.name}"
  )
end

I have now solved my problem by using a custom provider for packages, that
is based on the aptitude provider, but simply adds this:

# See if we need to run aptitude update before installing this package
if not File.exists?("/tmp/puppet-iphionapt")
  FileUtils.touch("/tmp/puppet-iphionapt")
  aptitude("update")
end

I just haven''t found a suitable way to clean up the tempfile from
within
Puppet without touching any of Puppet''s own files, so I use a cronjob
for
that now. Maybe I''ll switch to a ''postrun_command'',
or does anyone have a
better idea?

Best regards,
Martijn.