Gary Larizza
2009-Dec-09 18:15 UTC
[Puppet Users] pkgdmg Provider for Deploying pkgs with OS X
Hi All, I''m looking to clean up the way I deploy packages to OS X clients. I have a puppetmaster and a webserver that hosts installation .pkg files at every site in our district. I''ve been using variations of the pkg_deploy.pp file that utilizes the pkgdmg provider: Here''s the file: define pkg_deploy($sourcedir = false) { $sourcedir_real = $sourcedir ? { false => "http://testing.huronhs.com/pkgs/general_image", default => $sourcedir } package { $name: ensure => installed, provider => pkgdmg, source => "$sourcedir_real/$name" } } Every building has a general classfile which utilizes pkg_deploy to install packages - here''s a sample file at one of our buildings: class wes_general_image { include staff # Custom Installers First pkg_deploy_wes {"Office2004.dmg": alias => office2004wes, before => Package[officeupdateswes], } Package } pkg_deploy {"iLife09.dmg": alias => ilife09wes, } pkg_deploy {"iWork09.dmg": alias => iwork09wes, } pkg_deploy {"OfficeUpdates.dmg": alias => officeupdateswes, require => Package[office2004wes], } pkg_deploy {"Firstclass.dmg": alias => firstclasswes} pkg_deploy {"Textwrangler23.dmg": alias => textwrangler23wes} pkg_deploy {"ServerAdmin1057.dmg": alias => serveradmin1057wes} pkg_deploy {"Timezone.dmg": alias => timezonewes} } # End of Class CURRENTLY, I''ve created separate pkg_deploy classfiles which change $sourcedir to point back to the local server hosting the package file. This meant I was creating a "pkg_deploy_buildingname.pp" classfile for every building, and then every general classfile would have to make a pkg_deploy_buildingname {} call. It''s ugly and improper, and I need to fix it. My question is - would I create a single class file for the district that defines all the packages ala: pkg_deploy{"Package.pkg": alias => pkgalias} and then have separate building-level files that include this file but somehow modify the $sourcedir variable? What would that call look like? Thanks for any help/pointers you guys can give me! -Gary -- 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.
Nigel Kersten
2009-Dec-09 18:49 UTC
Re: [Puppet Users] pkgdmg Provider for Deploying pkgs with OS X
On Wed, Dec 9, 2009 at 10:15 AM, Gary Larizza <glarizza@me.com> wrote:> Hi All, > > I''m looking to clean up the way I deploy packages to OS X clients. I > have a puppetmaster and a webserver that hosts installation .pkg files > at every site in our district. I''ve been using variations of the > pkg_deploy.pp file that utilizes the pkgdmg provider: Here''s the > file: > > define pkg_deploy($sourcedir = false) > { > $sourcedir_real = $sourcedir ? { > false => "http://testing.huronhs.com/pkgs/general_image", > default => $sourcedir > } > package { $name: > ensure => installed, > provider => pkgdmg, > source => "$sourcedir_real/$name" > } > }Are you really committed to this definition? I don''t quite see the advantage of it myself. We do it like this. # Package resource defaults for OS X clients Package { ensure => installed, provider => pkgdmg } Then we have a fact called "pkgbase" that sets the http server the packages are delivered from for various locations with a fallback to the default location. We also make use of variables so it is simpler to increment a given package like: $office_2004_pkg = "Office2004-20091209.dmg" package { "$office_2004_pkg": source => "$pkgbase/$office_2004_pkg", } Doesn''t that let you achieve the same thing in a simpler manner?> > Every building has a general classfile which utilizes pkg_deploy to > install packages - here''s a sample file at one of our buildings: > > class wes_general_image { > > include staff > > # Custom Installers First > pkg_deploy_wes {"Office2004.dmg": > alias => office2004wes, > before => Package[officeupdateswes], > } > Package > } > pkg_deploy {"iLife09.dmg": > alias => ilife09wes, > } > pkg_deploy {"iWork09.dmg": > alias => iwork09wes, > } > pkg_deploy {"OfficeUpdates.dmg": > alias => officeupdateswes, > require => Package[office2004wes], > } > pkg_deploy {"Firstclass.dmg": alias => firstclasswes} > pkg_deploy {"Textwrangler23.dmg": alias => textwrangler23wes} > pkg_deploy {"ServerAdmin1057.dmg": alias => serveradmin1057wes} > pkg_deploy {"Timezone.dmg": alias => timezonewes} > > } # End of Class > > > CURRENTLY, I''ve created separate pkg_deploy classfiles which change > $sourcedir to point back to the local server hosting the package > file. This meant I was creating a "pkg_deploy_buildingname.pp" > classfile for every building, and then every general classfile would > have to make a pkg_deploy_buildingname {} call. It''s ugly and > improper, and I need to fix it. > > My question is - would I create a single class file for the district > that defines all the packages ala: pkg_deploy{"Package.pkg": alias => > pkgalias} and then have separate building-level files that include > this file but somehow modify the $sourcedir variable? What would that > call look like? Thanks for any help/pointers you guys can give me! > > -Gary > > -- > > 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. > > >-- nigel -- 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.