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 <warron...@gmail.com > <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 <luke....@lmax.com >> <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 < >>>> jschaef...@gmail.com> 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 <pmb...@gmail.com> >>>>>> 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 <warron...@gmail.com> >>>>>>> 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 <pmb...@gmail.com> >>>>>>> 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 <warron...@gmail.com> >>>>>>>> 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 puppet-users...@googlegroups.com. >>>>>>>> > 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 puppet-users...@googlegroups.com. >>>>>>>> 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 puppet-users...@googlegroups.com. >>>>>>> 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 puppet-users...@googlegroups.com. >>>>>>> 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 puppet-users...@googlegroups.com. >>>>> 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 puppet-users...@googlegroups.com <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 puppet-users+unsubscr...@googlegroups.com. 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.