Assuming the libraries to connect to sybase from ruby exist… you could just 
write a custom function. 
https://docs.puppetlabs.com/guides/custom_functions.html 
<https://docs.puppetlabs.com/guides/custom_functions.html>

so basically you want to do something like:

````
$workgroup = sybase_workgroup($::hostname)

case $workgroup {

        ‘A’: {
                $template = template(‘modulename/A/template.erb’)
        }
        ‘B’: {
                $template = template(‘modulename/B/template.erb’)
        }
        default: {
                $template = template(‘modulename/default/template.erb’)
        }
}

And then the custom function would do something like
```` 
require ‘an_sybase_library’

module Puppet::Parser::Functions

        newfunction(:sybase_workstation) do |args|
                db = sybase_db_connection
                result = db.query(“SELECT workgroup FROM workgroups WHERE 
hostname = ‘#{args[0]}’”)
                result[‘workgroup’]
        end
end
````
                
Totally full of pseudo code, but that hopefully makes sense.

— cwebber

> On Oct 21, 2014, at 7:20 AM, Stella <[email protected]> wrote:
> 
> Hi Johan,
> 
> Thank you very much for the  information. 
> 
> I am not using the machine information from Sybase to do node classification 
> in puppet.  My node classification is done by Puppet Dashboard. 
> 
> My Sybase database doesn't contain any puppet class information. It contains 
> the hostname and the workgroup the host belongs to.  What I want to return 
> from my database query is: given a hostname, please tell me which workgroup 
> it belongs to, then based on the workgroup value, my puppet class will decide 
> which template to apply to this host. 
> 
> That's why I think a custom fact might do this job: I will define a custom 
> fact, which will get hostname and then connect to Sybase to determine this 
> host's workgroup. I actually already have the perl script to do this job, but 
> need to convert it to Ruby scirpt (puppet fact is defined in Ruby). 
> 
> I am still doing research to find out what is the best approach. Will let you 
> know. 
> 
> Thanks,
> Stella
> 
> On Monday, October 20, 2014 5:36:50 PM UTC-4, Johan De Wit wrote:
> Hi Stella, 
> 
> my first thought goes to implement a ENC script. Since you are already 
> keeping inventory data in a database, you could keep everything in one place. 
>  If it is possible to add puppet support, in practice, make it possible to 
> assign puppet classes to your nodes in your sybase setup.
> 
> If that is not possible, I would look at a hiera backend getting the info 
> from your sybase database.
> 
> Keep in mind that it is the puppet master that needs the info from your 
> sybase database, so facts is not really an option.  
> 
> (technically you can, but then every node needs access to your database, but 
> your master can get the needed info also, only keep in mind your master 
> identifies the nodes with the 'clientcert' or 'certname'. 
> 
> Personally, I would go for the ENC first place, hiera in second, but facts is 
> a no-go. 
> 
> hth a bit
> 
> jo   
> 
> 
> 
> On 20/10/14 19:27, Stella wrote:
>> Hi,
>> 
>> I am using Puppet 3.62. Trying to figure out what is the best way to connect 
>> to my sybase database to query machine information.
>> 
>> Which is better: 
>> 
>> 1. Define facts that will connect to my sybase and do the query.
>> 
>> 2. Use Hiera to connect to my sybase and do the query.
>> 
>> Anyone has any example to share? 
>> 
>> Thanks!
>> 
>> Stella
>> -- 
>> 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 [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/puppet-users/69fa9702-708a-442c-803c-1b3bead7ab2f%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/puppet-users/69fa9702-708a-442c-803c-1b3bead7ab2f%40googlegroups.com?utm_medium=email&utm_source=footer>.
>> For more options, visit https://groups.google.com/d/optout 
>> <https://groups.google.com/d/optout>.
> 
> 
> -- 
> Johan De Wit
> 
> Open Source Consultant
> 
> Red Hat Certified Engineer              (805008667232363)
> Puppet Certified Professional 2013/2014 (PCP0000006)
> _________________________________________________________
>  
> Open-Future                 Phone     +32 (0)2/255 70 70
> Zavelstraat 72              Fax       +32 (0)2/255 70 71
> 3071 KORTENBERG             Mobile    +32 (0)474/42 40 73
> BELGIUM                     http://www.open-future.be 
> <http://www.open-future.be/>
> _________________________________________________________
>  
> 
> Upcoming Events:
> 
> Puppet Introduction Course | 
> http://www.open-future.be/puppet-introduction-course-13th-october 
> <http://www.open-future.be/puppet-introduction-course-13th-october>
> Puppet Practitioner Training | 
> http://www.open-future.be/puppet-practitioner-former-puppet-advanced-training-14-till-16th-october
>  
> <http://www.open-future.be/puppet-practitioner-former-puppet-advanced-training-14-till-16th-october>
> Linux Training | 
> http://www.open-future.be/linux-training-20-till-24th-october 
> <http://www.open-future.be/linux-training-20-till-24th-october>
> Puppet Introduction Course | 
> http://www.open-future.be/puppet-introduction-course-10th-november 
> <http://www.open-future.be/puppet-introduction-course-10th-november>
> Puppet Fundamentals Training | 
> http://www.open-future.be/puppet-fundamentals-training-12-till-14th-november 
> <http://www.open-future.be/puppet-fundamentals-training-12-till-14th-november>
> Subscribe to our newsletter: http://eepurl.com/BUG8H <http://eepurl.com/BUG8H>
> 
> -- 
> 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 [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/puppet-users/90b2a777-424d-49ec-a236-ab8dcd85d41e%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/puppet-users/90b2a777-424d-49ec-a236-ab8dcd85d41e%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/CB8758AF-4226-4AB3-BE0C-F1F85A7CAE63%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to