Hi all, I''m wondering how people are handling OS X package installers that require reboots (e.g. 10.5.3) with Puppet - specifically how you get them to install without totally irritating your users. Specifically my client environment is 100% laptops, and many of them voyage home with users each day so just telling puppet to install them at 1am and to hell with user data*, so basically I''m looking for any hints/recipes for doing something like: 1. Download package from http://.../myupdatename.dmg 2. Tell user "Hey, there''s this update... it''s super important, install it... Now? Now? How about Now? Ok, how about at the end of today?" 3. Install it then / keep prompting / if not installed in x days force install I''d rather avoid reinventing the wheel if I can :) * which is ok in some environments of course, but if it happens when they''re half an hour in to the work day they might get a little more annoyed at me, which is bad when I''m within throwing distance... Patrick Quinn-Graham contact | mobile +44 78 7217 2213 | more... Beware of low-flying butterflies. -- /usr/games/fortune --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
On Thu, Jun 26, 2008 at 3:07 PM, Patrick Quinn-Graham <patrickq@gmail.com> wrote:> Hi all, > I''m wondering how people are handling OS X package installers that require > reboots (e.g. 10.5.3) with Puppet - specifically how you get them to install > without totally irritating your users. > Specifically my client environment is 100% laptops, and many of them voyage > home with users each day so just telling puppet to install them at 1am and > to hell with user data*, so basically I''m looking for any hints/recipes for > doing something like: > 1. Download package from http://.../myupdatename.dmg > 2. Tell user "Hey, there''s this update... it''s super important, install > it... Now? Now? How about Now? Ok, how about at the end of today?" > 3. Install it then / keep prompting / if not installed in x days force > install > I''d rather avoid reinventing the wheel if I can :) > * which is ok in some environments of course, but if it happens when they''re > half an hour in to the work day they might get a little more annoyed at me, > which is bad when I''m within throwing distance...Unfortunately there''s no good answer for this at the moment Patrick. It''s on my to-do list to work on a generic solution for this and get it out there, but I''ve headed down quite a few dead ends with it, primarily with GUI frameworks that I''ve found too frustrating to use. Really everyone just wants to mimic the functionality of SMS and Windows Update, which isn''t such a bad thing, but in a strong sense Apple are the best people to fix this with regard to Apple updates. I just want to be able to execute "softwareupdate --install foo --gui" and have it provide all the right GUI feedback to the end user if they''re logged in, restart/logout prompts, etc etc. -- Nigel Kersten Systems Administrator MacOps --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
On 28-Jun-08, at 4:45 PM, Nigel Kersten wrote:> On Thu, Jun 26, 2008 at 3:07 PM, Patrick Quinn-Graham > <patrickq@gmail.com> wrote: >> >> I''m wondering how people are handling OS X package installers that >> require >> reboots (e.g. 10.5.3) with Puppet - specifically how you get them >> to install >> without totally irritating your users. > > Unfortunately there''s no good answer for this at the moment Patrick. > ... > I just want to be able to execute "softwareupdate --install foo --gui" > and have it provide all the right GUI feedback to the end user if > they''re logged in, restart/logout prompts, etc etc.Seems like a good thing to want... have you radar''d it? Maybe if they got another one from me that might add to the "people want this! should we still prioritise other things higher?" factor. Putting something together that will download a dmg in to say /var/ patrickdemandsthisbeinstalled/* wouldn''t be too difficult, and then having a logout hook that looks for anything there and if there is then throws up a CocoaDialog "Software updates need installating... Now? Next time?" and uses iHook to show a "Installationing Stuffs..." and then cleans up /var/patrickdemandsthisbeinstalled/ shouldn''t be too difficult. Indeed the CocoaDialog/iHook side I''ve already got working. (Of course if no user is logged in it could just pop up the iHook and say "I''m doing this....", and perhaps show a "Software updates are ready to install when you logout, please allow extra time today, you must install these updates within 3 days or the option to skip will disappear. " if they are but are not yet logging out.) The only problem is that it would be somewhat difficult to track using puppet. I suppose you could use the file type to ensure that the dmg is downloaded and then use some kind of cookie (like the one dmgpkg uses) to prevent downloading it again. It would also, I imagine, then become kind of difficult to install things using the traditional package installers in puppet that you want to depend on this update. Does puppet have any way of having a type that can not be fixed by itself? e.g. have a package provider that would download files to this temp directory, but then say "No, not installed, I can''t install it right now" in terms of meeting the ensure => installed requirement until after the actual install. Thinking out load here, please excuse me if this has been discussed at length before, I''m new around here :) (* obviously I wouldn''t actually use /var/ patrickdemandsthisbeinstalled/ because that would just be silly.) Patrick Quinn-Graham contact | mobile +44 78 7217 2213 | more... Witty comment goes here. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
We should chat about this offline Patrick. I think I''ve decided that the only real solution is to write a smart wrapper around softwareupdate and then design a puppet type that is smart enough to check for the existence of the downloaded pkg/dmg or the receipt in the new pkg db or the old Receipts folder. On Sat, Jun 28, 2008 at 11:05 AM, Patrick Quinn-Graham <patrickq@gmail.com> wrote:> On 28-Jun-08, at 4:45 PM, Nigel Kersten wrote: > > On Thu, Jun 26, 2008 at 3:07 PM, Patrick Quinn-Graham > <patrickq@gmail.com> wrote: > > I''m wondering how people are handling OS X package installers that require > > reboots (e.g. 10.5.3) with Puppet - specifically how you get them to install > > without totally irritating your users. > > Unfortunately there''s no good answer for this at the moment Patrick. > ... > I just want to be able to execute "softwareupdate --install foo --gui" > and have it provide all the right GUI feedback to the end user if > they''re logged in, restart/logout prompts, etc etc. > > Seems like a good thing to want... have you radar''d it? Maybe if they got > another one from me that might add to the "people want this! should we still > prioritise other things higher?" factor. > Putting something together that will download a dmg in to say > /var/patrickdemandsthisbeinstalled/* wouldn''t be too difficult, and then > having a logout hook that looks for anything there and if there is then > throws up a CocoaDialog "Software updates need installating... Now? Next > time?" and uses iHook to show a "Installationing Stuffs..." and then cleans > up /var/patrickdemandsthisbeinstalled/ shouldn''t be too difficult. Indeed > the CocoaDialog/iHook side I''ve already got working. (Of course if no user > is logged in it could just pop up the iHook and say "I''m doing this....", > and perhaps show a "Software updates are ready to install when you logout, > please allow extra time today, you must install these updates within 3 days > or the option to skip will disappear. " if they are but are not yet logging > out.) > The only problem is that it would be somewhat difficult to track using > puppet. I suppose you could use the file type to ensure that the dmg is > downloaded and then use some kind of cookie (like the one dmgpkg uses) to > prevent downloading it again. It would also, I imagine, then become kind of > difficult to install things using the traditional package installers in > puppet that you want to depend on this update. > Does puppet have any way of having a type that can not be fixed by itself? > e.g. have a package provider that would download files to this temp > directory, but then say "No, not installed, I can''t install it right now" in > terms of meeting the ensure => installed requirement until after the actual > install. > Thinking out load here, please excuse me if this has been discussed at > length before, I''m new around here :) > (* obviously I wouldn''t actually use /var/patrickdemandsthisbeinstalled/ > because that would just be silly.) > Patrick Quinn-Graham > contact | mobile +44 78 7217 2213 | more... > Witty comment goes here. > >-- Nigel Kersten Systems Administrator MacOps --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
I''d be interested in this discussion. Last time I looked, the puppet package provider for Mac OS X didn''t even look in receiptsdb. Regarding caching the packages locally, seems like this could be handled by the file type as Patrick suggested, but that blends packages and file types together in a potentially messy way. Maybe the package provider should handle this on its own rather than have a package first require a file. Is there a precedent for this? Which packages require a reboot would have to be flagged somehow. If you are running puppet client at intervals, those could do the caching and installation if no user is logged in, etc, then the logout hook which prompts the user could still use puppet to ensure the packages requiring a reboot get installed. the logout hook could set a puppet variable/fact to indicate that it is safe to install even the packages requiring a reboot. Maybe I am just rehashing a lot of what Patrick has suggested and I am looking for a standardized or best practice doing this too. Kyle Crawford On Jul 1, 2008, at 5:45 PM, Nigel Kersten wrote:> > We should chat about this offline Patrick. > > I think I''ve decided that the only real solution is to write a smart > wrapper around softwareupdate and then design a puppet type that is > smart enough to check for the existence of the downloaded pkg/dmg or > the receipt in the new pkg db or the old Receipts folder. > > > > On Sat, Jun 28, 2008 at 11:05 AM, Patrick Quinn-Graham > <patrickq@gmail.com> wrote: >> On 28-Jun-08, at 4:45 PM, Nigel Kersten wrote: >> >> On Thu, Jun 26, 2008 at 3:07 PM, Patrick Quinn-Graham >> <patrickq@gmail.com> wrote: >> >> I''m wondering how people are handling OS X package installers that >> require >> >> reboots (e.g. 10.5.3) with Puppet - specifically how you get them >> to install >> >> without totally irritating your users. >> >> Unfortunately there''s no good answer for this at the moment Patrick. >> ... >> I just want to be able to execute "softwareupdate --install foo -- >> gui" >> and have it provide all the right GUI feedback to the end user if >> they''re logged in, restart/logout prompts, etc etc. >> >> Seems like a good thing to want... have you radar''d it? Maybe if >> they got >> another one from me that might add to the "people want this! should >> we still >> prioritise other things higher?" factor. >> Putting something together that will download a dmg in to say >> /var/patrickdemandsthisbeinstalled/* wouldn''t be too difficult, and >> then >> having a logout hook that looks for anything there and if there is >> then >> throws up a CocoaDialog "Software updates need installating... Now? >> Next >> time?" and uses iHook to show a "Installationing Stuffs..." and >> then cleans >> up /var/patrickdemandsthisbeinstalled/ shouldn''t be too difficult. >> Indeed >> the CocoaDialog/iHook side I''ve already got working. (Of course if >> no user >> is logged in it could just pop up the iHook and say "I''m doing >> this....", >> and perhaps show a "Software updates are ready to install when you >> logout, >> please allow extra time today, you must install these updates >> within 3 days >> or the option to skip will disappear. " if they are but are not yet >> logging >> out.) >> The only problem is that it would be somewhat difficult to track >> using >> puppet. I suppose you could use the file type to ensure that the >> dmg is >> downloaded and then use some kind of cookie (like the one dmgpkg >> uses) to >> prevent downloading it again. It would also, I imagine, then become >> kind of >> difficult to install things using the traditional package >> installers in >> puppet that you want to depend on this update. >> Does puppet have any way of having a type that can not be fixed by >> itself? >> e.g. have a package provider that would download files to this temp >> directory, but then say "No, not installed, I can''t install it >> right now" in >> terms of meeting the ensure => installed requirement until after >> the actual >> install. >> Thinking out load here, please excuse me if this has been discussed >> at >> length before, I''m new around here :) >> (* obviously I wouldn''t actually use /var/ >> patrickdemandsthisbeinstalled/ >> because that would just be silly.) >> Patrick Quinn-Graham >> contact | mobile +44 78 7217 2213 | more... >> Witty comment goes here. >> >> > > > > -- > Nigel Kersten > Systems Administrator > MacOps > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---