Wow is that a lot to take in.  I simply need to learn Ruby to cut down on
noise, or so it seems.

Thanks Michael.

--------------------------
Warron French


On Thu, Mar 30, 2017 at 12:23 PM, Michael Watters <[email protected]>
wrote:

> %x is a ruby method which captures command output.  IMO you can do most of
> what you need using native ruby methods, there's no need to pipe output to
> grep/sed/awk since ruby has built in pattern matching functions and if
> you're using ruby you might as well do it the ruby way.
>
> For example, this fact uses the =~ operator to do pattern matching on an
> array of strings.
>
> Facter.add(:screen_count) do
>     confine :kernel => 'Linux'
>     setcode do
>         @screens = Facter::Core::Execution.exec("/usr/bin/xrandr -display
> :0").split("\n")
>         @screens.count { |x| x =~ /connected/ }
>     end
> end
>
> IMO piping grep to awk is never necessary.  awk has a built-in search
> function, just use it!  The command used in that fact could be rewritten as
> follows.
>
>  ethtool_g = %x{ethtool -g #{int} 2>/dev/null  | awk '/^(RX|TX)/ {print
> $2}'}
>
> Still messy and a more native way to do it would be like this.
>
> %x{ethtool -g #{int} 2>/dev/null}.each_line do |line|
>     puts line.split("\s")[-1] if line =~ /^(RX|TX):/
> end
>
>
> On Thursday, March 30, 2017 at 11:11:35 AM UTC-4, 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?
>>
>> Secondly, the link= https://github.com/LMAX-Exchan
>> ge/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?
>>
>> 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?
>>
>> 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]>
>> 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]> 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#executa
>>>>>>>>> ble-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/CAJA1CN9aFH4E
>>>>>>>>> za-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/CAJdJdQnAbguK
>>>>>>>> zz0S2O_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].
>>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>>> gid/puppet-users/f28aa960-21c9-4d8f-a086-2e72d0893060%40goog
>>>> legroups.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/69e989c8-1c87-4601-a992-81988b363021%40googlegroups.com
> <https://groups.google.com/d/msgid/puppet-users/69e989c8-1c87-4601-a992-81988b363021%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/CAJdJdQkZ%3DARPypAtT6ZYHZOO9kvTfscABJX1oaHCCtqbV7zKMA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to