On Mon, Oct 19, 2009 at 2:11 PM, Clint Savage <[email protected]> wrote: > Below I have a parser function that I have created which was working, > but now is not working. I have made quite a few changes to this code, > but can't seem to find the right combination to make it work again. > > After extensive conversations with Volcane, joe-mac and andrewcshafer > from #puppet, it was suggested that I put this on the list. I don't > know what exactly is going on, but I can say that I think this is a > bug now. However, I can't prove it beyond what I have here without > help. > > I'd like to put this out to the puppeteers here and see if I can get > some more help identifying why I get the error at the end of the > information below. > > Thanks in advance for all the help. > > Cheers, > > Clint > > ------------------------- > > ## modules/core/plugins/puppet/parser/functions/get_ad_uids.rb > > require 'ldap' > > # this function queries our Active Directory server and pulls users > with a uid greater than 50000. > # Specifically used for guaranteeing homedirs exist for users in the list > > module Puppet::Parser::Functions > newfunction(:get_ad_uids, :type => :rvalue) do |args| > > host = 'ad.xyz123.net' > port = LDAP::LDAP_PORT > > # cn=ldap,ou=System Accounts,ou=Resources,dc=ad,dc=xyz123,dc=net > root = 'cn=ldap,ou=System Accounts,ou=Resources,dc=ad,dc=xyz123,dc=net' > base = 'ou=Engineering,ou=xyz123,dc=ad,dc=xyz123,dc=net' > password = 'password' > > conn = LDAP::Conn.new(host, port) > conn.set_option( LDAP::LDAP_OPT_PROTOCOL_VERSION, 3 ) > conn.bind(root, password) > > uidnum = args[0] > ad_uids = Array.new > ids = conn.search2(base, LDAP::LDAP_SCOPE_SUBTREE, > "(uidNumber>=#{uidnum})", "uid") > uids = ad_uids.map { |i| i[0] }.flatten > > uids > > end > end > > -- output of above code -- > > [r...@tuatara (puppetmaster) functions]# irb -r puppet -r get_ad_uids.rb > irb(main):001:0> Puppet::Parser::Functions::function(:get_ad_uids) > => "function_get_ad_uids" > irb(main):002:0> s = Puppet::Parser::Scope.new > => #<Puppet::Parser::Scope:0x2adf763d7220 @namespaces=[""], > @symtable={}, @defaults={}, @tags=[]> > irb(main):003:0> s.function_get_ad_uids('50000') > => ["user1", "user2", "user3", "user4"] > > ## manifests/templates.pp > > node common { > include core > .. snip .. > } > > .. snip .. > > node puppetmaster inherits common { > include puppet::server > include homedir::creator > > $uids = get_ad_uids('50000') # should return an array of homedirs > to ensure are created > print { $uids: } > # make sure the home directories exist for all ad users above > # the specified uid > > ensure_homedirs { $uids: } > > .. snip .. > } > > ==> puppet-err.log <== > 2009-10-19T14:02:25-06:00 tuatara puppetmasterd[4479]: > Puppet::Parser::AST::Resource failed with error ArgumentError: > Resources require a type and title at > /var/lib/puppet/manifests/templates.pp:34 on node tuatara > 2009-10-19T14:02:25-06:00 tuatara puppetmasterd[4479]: > Puppet::Parser::AST::Resource failed with error ArgumentError: > Resources require a type and title at > /var/lib/puppet/manifests/templates.pp:34 on node tuatara > 2009-10-19T14:02:25-06:00 tuatara puppetd[4538]: Could not retrieve > catalog: Puppet::Parser::AST::Resource failed with error > ArgumentError: Resources require a type and title at > /var/lib/puppet/manifests/templates.pp:34 on node tuatara >
I should mention that line 34 is the print command above. However, if I remove that, it errors at the 'ensure_homedirs function. Clint --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
