On Monday, July 28, 2014 8:56:08 AM UTC-5, Dimitris Stafylarakis wrote: > > Hi people, > > thanks for your replies. My actual case is *run apt-get update before > upgrading a package*. So I have packages in my own repository and I'm > managing them through puppet on the production server. I want to be able to > set a specific version number and have puppet install the right version of > the package on the server. > > @pete: actually I am using puppetlabs/apt. It works fine when a new > package is being installed but for some reason doesn't trigger an update > when upgrading a package (i.e., changing the version number in the ensure > parameter). > > @john: I understand that it's difficult to determine a priori which > resources will be refreshed, I was just asking in case someone found a > smart solution to this already. For now, I have to resolve to running > updates on every puppet run. >
Let's be clear: there is no possible general solution -- smart or otherwise -- for determining which resources will be modified in advance of attempting to sync those resources. There are alternatives specific to some particular resource types and to some individual resources, but the general case requires unlimited ability to predict future events. Turning now specifically to Package resources in an Apt environment, let's think for a minute. What does 'apt-get update' do, and/or why do you need to run it before updating Packages? Well, it updates the local machine's cache of repository metadata, including especially the list of available packages, which Apt does not do unless asked. If you want to ensure that a given Package is at the latest version available from the repository, then you need the update process to draw on up-to-date repository metadata. No problem. But wait! How do you know whether there's an update to an installed package available at all? You need the current repository metadata for that, too. How do you ensure your copy of the metadata is up to date? Yes, 'apt-get update'. You cannot limit running 'apt-get update' to times when there is a Package update to apply, because you need to run it before you can determine whether there are any updates to apply at all. With that said, if it were ok for machines to lag a bit behind repository updates, then you could maybe apply a schedule <http://docs.puppetlabs.com/references/latest/type.html#schedule> to the 'apt-get update' Exec to limit when it can run or how many times it can run in a given period. That way it wouldn't need to run every time an agent applies its catalog, if that's what you're really after. That will reduce the average load on your Apt server for metadata requests, which are probably the bulk of the requests it services, but it will not reduce the load from serving actual packages. If you stagger nodes' metadata updates, however, then you will level out the load on your apt server from both kinds of requests. John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/3c9d2a8e-fa0d-452d-a6af-db0ba412598a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.