On Mon, Dec 22, 2008 at 9:47 AM, Carl Caum <carl.c...@gmail.com> wrote:
> > On Dec 22, 2008, at 11:42 AM, Nigel Kersten wrote: > > > > On Mon, Dec 22, 2008 at 9:28 AM, Carl Caum <carl.c...@gmail.com> wrote: > >> Most plist management can be done with the defaults command. It means we >> exec out everytime, but we could write a definition/plugin around it. >> > > It also has the sometimes undesirable side effect of converting all your > xml1 property lists to binary format. > > We tend to use PlistBuddy here for this reason. > > > > Not that it's a great solution, but you can force it to be xml1 with this: > plutil -convert xml1 > /Library/Preferences/DirectoryService/DirectoryService.plist > It has to be run after every write to be absolutely sure. But I have to > ask, why would you care if you use the defaults command every time for > reading and writing? > Because sometimes we have other tools that use one of the various plist modules for Ruby/Python etc that require the xml1 format, and some of those tools aren't running with elevated privileges, and can't always convert a plist to xml. We're slowly moving things over to using the BridgeSupport in Ruby/Python where you can instantiate an NSDictionary from a binary or xml plist instead, but that's only available in 10.5 by default. > > >> I'm having trouble getting puppet to run on OS X. I installed 0.24.7 on >> my OS X server VM using gems. After signing the certificate on the >> puppetmaster side, I get this on the client side: >> >> 2008-12-22 11:25:35.796 system_profiler[6552:10b] Exception while calling >> [SPPlatformReporter updateDictionary:] >> *** -[NSCFArray objectAtIndex:]: index (3) beyond bounds (2) >> err: Could not retrieve catalog: undefined method `[]' for nil:NilClass >> > > I've never seen that... do you get the same bug using the packages at: > > http://explanatorygap.net/puppetfacter/ > > ? > > I'll try them and report back > > > >> Any ideas? >> On Dec 19, 2008, at 11:16 PM, Crawford Kyle wrote: >> >> >> On Dec 19, 2008, at 10:48 PM, Nigel Kersten wrote: >> >> >> >> On Fri, Dec 19, 2008 at 7:23 PM, Crawford Kyle <kcrw...@gmail.com> wrote: >> >>> >>> On Dec 19, 2008, at 7:55 PM, Nigel Kersten wrote: >>> >>> >>> On Fri, Dec 19, 2008 at 2:29 PM, Carl Caum <carl.c...@gmail.com> wrote: >>> >>>> >>>> Does anyone know how to go about joining Mac OS X Leopard to an Active >>>> Directory domain with puppet? >>>> Primarily it needs to be broken down in to doing LDAP authentication >>>> with a few attribute mappings and using kerberos for the password >>>> authentication. >>> >>> >>> You're going to want to push out your DS preferences and then do an exec >>> for the joining of the machine account I imagine, although you could do some >>> of this with templates..... >>> >>> How were you doing this before Puppet? >>> >>> There are no native types now, because those of us doing the Mac stuff >>> with Puppet don't work in AD environments :) >>> >>> I'm more than happy to spend time helping you work through this though >>> Carl. I'm reasonably familiar with AD integration even though we don't do it >>> here. >>> >>> This would be a great recipe to get up on the Puppet wiki. >>> >>> >>> We are in a large AD environment using Puppet. We currently handle the AD >>> joining outside of Puppet with a python script in a launchd job that runs at >>> first boot, though we will probably be moving this to Puppet. >>> >>> The typical steps are: >>> Make sure time server is set and time is set correctly ( ntpd.conf or >>> exec systemsetup ) >>> Activate AD plugin by enabling it in DirectoryService.plist. ( just a >>> simple key value but I think you need to restart DirectoryService for it to >>> notice ) >>> Configure AD plugin using dsconfigad options. ( this can take a lot of >>> options all of these just change key values in ActiveDirectory.plist ) >>> Join to domain using dsconfigad with a limited AD account and password >>> with permissions to add machines to your OU. ( this would need to exec the >>> dsconfigad command with username, password, OU, machine join name. >>> Unfortunately the password is passed to dsconfigad in clear text as a >>> parameter ) >>> Set the authentication search path to Custom, and include your AD domain >>> node using dscl. ( dscl exec ) >>> >>> We do manage the time server with Puppet and setting a couple of mapping >>> attributes in the AD plists. >>> >>> I'm happy to help you get this all working in Puppet as well. >>> >> >> oh cool. I didn't realize you were doing AD integration Kyle. >> >> How are you ensuring that AD continues to be configured on the clients? >> Does the python launchd job do all of this? Or are you managing some >> components as Puppet resources? >> >> I've been thinking for a while about how to mange DirectoryService nodes >> as native Puppet types, but there are so many attributes to think about I'm >> not sure it actually simplifies matters all that much... >> >> >> Yes, I've done a lot of AD integration work. The python script I wrote >> tests the configuration and scenarios related to AD Node status and takes >> action if necessary. The only part in Puppet so far is management of a >> couple AD plist keys. >> >> Agreed, DirectoryService node configuration can get complex. There may be >> lower hanging fruit like improved plist management that would help in all >> areas including DirectoryService. >> >> Kyle >> >> >> >> >> >> >> >> > > > -- > Nigel Kersten > Systems Administrator > Tech Lead - MacOps > > > > > > > > -- Nigel Kersten Systems Administrator Tech Lead - 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+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---