On Thursday, 30 March 2017 16:11:35 UTC+1, Warron French wrote:
>
> Hi Luke, I have some questions for you.
>
> First, the link= 
> https://github.com/puppetlabs/puppetlabs-apache/blob/master/lib/facter/apache_version.rb
>  
> didn't have any reference to awk at all, was this the file you intended to 
> suggest?
>
>
Oh, I wasn't giving you Awk examples specifically, I was giving you one 
with a small amount of Ruby, and one with a bit more Ruby and some string 
manipulation in it. The use of Awk and piped shell commands in my Fact 
there is 100% pure laziness, it would be more "robust" to do all of the 
string manipulation in Ruby.
 

> Secondly, the link= 
> https://github.com/LMAX-Exchange/puppet-networking-example/blob/master/lib/facter/interface_ringbuffer.rb
>  
> did have a reference to awk; thank you.
> However, the syntax:
>       ethtool_g = %x{/sbin/ethtool -g #{int} 2>/dev/null | grep -P 
> '^(RX|TX):' | awk '{print $2}'}
>
> Looks like something other than just plain shell scripting, so can you 
> break this down for me just a little bit?
>
> I recognize what looks like a variable, called ethtool_g, and then it 
> continues with assignement based on %x{.......}  where the "...." is your 
> shell scripting.
>
> What is the *%x* a reference for/to?  Can I simply replace your variable 
> with one of my own, and your shell scripting between the curly braces with 
> my own shell scripting?
>
 
Correct, ethtool_g is a Ruby variable.

%x{} is one of the ways of executing something in a Shell and getting it's 
STDOUT, there are other ways, this post explains it well: 
 http://stackoverflow.com/questions/2232/calling-shell-commands-from-ruby

the #{int} is embedding a Ruby variable called 'int' defined earlier into 
the string.

Is that legal, and is this in the language of ruby (so I have a reference 
> point of where to go to look up more examples?
>

Yes, you can.

What I would recommend is copy one of those Facts to your homedir, then set 
an environment variable FACTERLIB=/home/$USERNAME, which sets an extra 
Facter search path to your homedir. If you then run "facter -p" you should 
see the new Fact in the list. Then you can edit your Fact to your heart's 
content, and Google every crash or error message you come up with ;-) Once 
it actually works you can add the Fact to a module and distribute it to 
servers.

-Luke
 

> Sorry for the load of questions.  Thank you for the information.
>
> --------------------------
> Warron French
>
>
> On Thu, Mar 30, 2017 at 11:03 AM, warron.french <[email protected] 
> <javascript:>> wrote:
>
>> Hey, thanks for the examples Luke!  I am looking at them now.
>>
>> --------------------------
>> Warron French
>>
>>
>> On Thu, Mar 30, 2017 at 8:31 AM, Luke Bigum <[email protected] 
>> <javascript:>> wrote:
>>
>>> Puppet modules on Github are a good source. I've found a simple one:
>>>
>>>
>>> https://github.com/puppetlabs/puppetlabs-apache/blob/master/lib/facter/apache_version.rb
>>>
>>> And one of my own that's a little more complicated:
>>>
>>>
>>> https://github.com/LMAX-Exchange/puppet-networking-example/blob/master/lib/facter/interface_ringbuffer.rb
>>>
>>> -Luke
>>>
>>> On Thursday, 30 March 2017 13:10:35 UTC+1, Warron French wrote:
>>>>
>>>> Joshua, thanks for this feedback.  I don't really know ruby; can you 
>>>> offer some ideas of where I can find other Puppet Facts written in Ruby 
>>>> that don't look like my originally posted example?
>>>>
>>>> Thank you sir.
>>>>
>>>> --------------------------
>>>> Warron French
>>>>
>>>>
>>>> On Tue, Mar 28, 2017 at 10:51 AM, Joshua Schaeffer <
>>>> [email protected]> wrote:
>>>>
>>>>> External facts are a Puppet v4 feature only. You have to use Ruby to 
>>>>> create custom facts in Puppet v3.
>>>>>
>>>>> On Monday, March 27, 2017 at 3:54:00 PM UTC-6, Warron French wrote:
>>>>>>
>>>>>> OK, done, and done.  But it still isn't showing up.
>>>>>>
>>>>>> Is this potentially because I am using PE-3.8 as a component of Red 
>>>>>> Hat Satellite?
>>>>>>
>>>>>> --------------------------
>>>>>> Warron French
>>>>>>
>>>>>>
>>>>>> On Mon, Mar 27, 2017 at 5:28 PM, Peter Bukowinski <[email protected]> 
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Warron,
>>>>>>>
>>>>>>> Puppet executes the script directly, so you need the shebang line 
>>>>>>> and you must ensure the file is executable.
>>>>>>>
>>>>>>> -- Peter
>>>>>>>
>>>>>>> On Mar 27, 2017, at 2:25 PM, warron.french <[email protected]> 
>>>>>>> wrote:
>>>>>>>
>>>>>>> Peter, perhaps I misunderstood you; but, I thought I was supposed to 
>>>>>>> be able to use bash or sh scripting to generate facters of my own 
>>>>>>> without 
>>>>>>> the use of Ruby.
>>>>>>>
>>>>>>> The link you provided refers to a python script example.  It also 
>>>>>>> adds a shebang line at the top of the script; do I need the shebang 
>>>>>>> line, 
>>>>>>> or will Puppet simply execute the shell script with:
>>>>>>>
>>>>>>> sh scriptname.sh
>>>>>>>
>>>>>>> Thanks for the feedback,
>>>>>>>
>>>>>>> --------------------------
>>>>>>> Warron French
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Mar 22, 2017 at 7:07 PM, Peter Bukowinski <[email protected]> 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Warron,
>>>>>>>>
>>>>>>>> I'd consider using an external, executable fact to avoid ruby 
>>>>>>>> altogether.
>>>>>>>>
>>>>>>>>   
>>>>>>>> https://docs.puppet.com/facter/3.6/custom_facts.html#executable-facts-----unix
>>>>>>>>
>>>>>>>> Basically, you can write a bash script (or use any language you 
>>>>>>>> want),
>>>>>>>> drop it into '<MODULEPATH>/<MODULE>/facts.d/' on your puppet server,
>>>>>>>> and it will be synced to all your nodes (assuming you use 
>>>>>>>> pluginsync).
>>>>>>>>
>>>>>>>> The only requirement for executable fact scripts is that they must
>>>>>>>> return key/value pairs in the format 'key=value'. Multiple 
>>>>>>>> keys/values
>>>>>>>> get their own line. In your case, you could do something like this:
>>>>>>>>
>>>>>>>> -----
>>>>>>>> #!/bin/bash
>>>>>>>>
>>>>>>>> key="qty_monitors_total"
>>>>>>>> value=$(your parsing command for /var/log/Xorg.0.log here)
>>>>>>>>
>>>>>>>> echo "${key}=${value}"
>>>>>>>> -----
>>>>>>>>
>>>>>>>> Save the file as an executable script in the above mentioned path 
>>>>>>>> and
>>>>>>>> it should be available on the next puppet run.
>>>>>>>>
>>>>>>>> On Wed, Mar 22, 2017 at 3:24 PM, warron.french <[email protected]> 
>>>>>>>> wrote:
>>>>>>>> > Hello, I have finally learned how to write a Custom Fact; and 
>>>>>>>> duplicated the
>>>>>>>> > syntax several times over inside the same .rb file.
>>>>>>>> >
>>>>>>>> > I am using syntax that looks like the following:
>>>>>>>> >
>>>>>>>> > Facter.add('qty_monitors_total') do
>>>>>>>> >       setcode  do
>>>>>>>> >              Facter::Util::Resolution.exec('/bin/grep " connected"
>>>>>>>> > /var/log/Xorg.0.log | cut -d\) -f2,3,4 | grep GPU |sort -u | wc 
>>>>>>>> -l')
>>>>>>>> >       end
>>>>>>>> > end
>>>>>>>> >
>>>>>>>> > I don't know of any other way to do this yet; but that's not my 
>>>>>>>> concern yet.
>>>>>>>> >
>>>>>>>> > What I would like to know is how can I use an awk command within 
>>>>>>>> the
>>>>>>>> > Facter::Util::Resolution.exec('.........') line.
>>>>>>>> >
>>>>>>>> > I have a need to essentially reproduce the line above but drop  
>>>>>>>>  wc -l and
>>>>>>>> > add awk '{ print $2"_"$3"_on_"$1$4 }'
>>>>>>>> >
>>>>>>>> > I need the awk command to pretty much look like this; the problem 
>>>>>>>> is awk
>>>>>>>> > uses its own single quotes (') and it will break the ruby code.
>>>>>>>> >
>>>>>>>> > I am not a ruby developer; so if someone could either tell me:
>>>>>>>> >
>>>>>>>> > It's just not possible; or
>>>>>>>> > do it this way
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > That would be greatly appreciated.  Thank you,
>>>>>>>> >
>>>>>>>> > --------------------------
>>>>>>>> > Warron French
>>>>>>>> >
>>>>>>>> > --
>>>>>>>> > 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/CAJdJdQmZXQAd%2Bo%2Bnp-NHqxGHnXubf%2Bac-dP5FPoy4QYMEVuBuA%40mail.gmail.com
>>>>>>>> .
>>>>>>>> > For more options, visit 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/CAJA1CN9aFH4Eza-FoxzrfXDWiGCUHXE%2BGFt2Nu%3DjK2eDzV4upg%40mail.gmail.com
>>>>>>>> .
>>>>>>>> For more options, visit 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/CAJdJdQnAbguKzz0S2O_NJfp2nzjeev77Ld7PHBEAOBH8_CZPsw%40mail.gmail.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/puppet-users/CAJdJdQnAbguKzz0S2O_NJfp2nzjeev77Ld7PHBEAOBH8_CZPsw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit 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/F53C3C7F-916F-4DB1-896F-8FF0F7F54BD6%40gmail.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/puppet-users/F53C3C7F-916F-4DB1-896F-8FF0F7F54BD6%40gmail.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>>> For more options, visit 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/73bd7507-03a3-4421-bf51-af2e9f37d62c%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/puppet-users/73bd7507-03a3-4421-bf51-af2e9f37d62c%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit 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] <javascript:>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/puppet-users/f28aa960-21c9-4d8f-a086-2e72d0893060%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/puppet-users/f28aa960-21c9-4d8f-a086-2e72d0893060%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit 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/88664765-c03e-41ae-8bfd-20a5ccac1963%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to