Looks like its not working with compound filters, # mco rpc rpcutil ping --do /data/mcollective_inventory/ --dm registrationmonitor -S "osfamily=Solaris and hostname=/gard/" Discovering hosts using the mc method for 2 second(s) .... 26
And the same working with --nodes and it says, The rpc application failed to run, use -v for full error backtrace details: Cannot mix --disc-method, --disc-option and --nodes Regards Ravi On Saturday, March 11, 2017 at 10:27:37 PM UTC+5:30, Ravi Kumar wrote: > > Nevermind. Its working fine now. In my setup the registration data will > send for every 24hours, so I had to increase the criticalage to 86400 to > made it work. > > Thanks for your help! > > On Sat, Mar 11, 2017 at 4:19 PM, Ravi Kumar <[email protected]> wrote: > >> Sure. Am trying that but not getting the details on >> mcollective_client.log file. >> >> below I added puts to print the data >> >> def self.parse_hosts(dir, hosts) >> data = {} >> hosts.each do |host| >> data[host] = YAML.load(File.read("#{dir}/#{host}")) >> puts "host ::::: #{data[host]}" >> end >> data >> end >> >> >> >> Thanks >> ravi >> >> On Sat, Mar 11, 2017 at 2:28 PM, R.I. Pienaar <[email protected]> wrote: >> >>> >>> On 11 Mar 2017, at 09:35, [email protected] wrote: >>> >>> I tried as you said and below the registrationmonitor.rb content. >>> >>> >>> Not sure. You will have to do your own debugging. Add logging lines and >>> see what goes wrong >>> >>> I don't know this plugging really >>> >>> >>> >>> ================================ >>> # discovers against directory of yaml files instead of the traditional >>> network discovery >>> # the input must be a directory of files as written out by the >>> registration-monitor plugin >>> require 'mcollective/rpc/helpers' >>> require 'yaml' >>> >>> module MCollective >>> class Discovery >>> class Registrationmonitor >>> def self.parse_hosts(dir, hosts) >>> data = {} >>> hosts.each do |host| >>> data[host] = YAML.load(File.read("#{dir}/#{host}")) >>> end >>> data >>> end >>> >>> def self.discover(filter, timeout, limit=0, client=nil) >>> newerthan = Time.now.to_i - >>> Integer(Config.instance.pluginconf["registration.criticalage"] || 86400) >>> >>> unless client.options[:discovery_options].empty? >>> directory = client.options[:discovery_options].last >>> else >>> raise("Need --discovery_options to a directory") >>> end >>> >>> discovered = [] >>> Dir.new(directory).each do |file| >>> next if file =~ /^\.\.?$/ >>> if File.mtime("#{directory}/#{file}").to_i >= newerthan >>> discovered.push file >>> end >>> end >>> >>> discovered.map do |host| >>> raise "Identities can only match /\w\.\-/, host #{host} does >>> not match" unless host.match(/^[\w\.\-]+$/) >>> host >>> end >>> >>> filter['identity'].each do |identity| >>> discovered = discovered.grep regexy_string(identity) >>> end >>> >>> parsed_hostdata = parse_hosts(directory, discovered) >>> >>> discovered = discovered.select { |identity| >>> parsed_hostdata[identity]["collectives"].include?(client.options[:collective]) >>> >>> } >>> >>> filter.keys.each do |key| >>> case key >>> when "fact" >>> discovered = fact_search(filter["fact"], discovered, >>> parsed_hostdata) >>> >>> when "cf_class" >>> discovered = class_search(filter["cf_class"], discovered, >>> parsed_hostdata) >>> >>> when "agent" >>> discovered = agent_search(filter["agent"], discovered, >>> parsed_hostdata) >>> >>> when "identity" >>> end >>> end >>> discovered >>> end >>> >>> def self.fact_search(filter, collection, parsed_hostdata) >>> filter.each do |f| >>> fact = f[:fact] >>> value = f[:value] >>> re = regexy_string(value) >>> >>> case f[:operator] >>> when "==", "=~" >>> collection = collection.select { |identity| >>> re.match(parsed_hostdata[identity]["facts"][fact]) } >>> when "<=" >>> collection = collection.select { |identity| value <= >>> parsed_hostdata[identity]["facts"][fact] } >>> when ">=" >>> collection = collection.select { |identity| value >= >>> parsed_hostdata[identity]["facts"][fact] } >>> when "<" >>> collection = collection.select { |identity| value < >>> parsed_hostdata[identity]["facts"][fact] } >>> when ">" >>> collection = collection.select { |identity| value > >>> parsed_hostdata[identity]["facts"][fact] } >>> when "!=" >>> collection = collection.select { |identity| >>> !re.match(parsed_hostdata[identity]["facts"][fact]) } >>> else >>> raise "Cannot perform %s matches for facts using the >>> registrationmonitor discovery method" % f[:operator] >>> end >>> end >>> collection >>> end >>> >>> def self.class_search(filter, collection, parsed_hostdata) >>> filter.each do |f| >>> re = regexy_string(f) >>> collection = collection.select { |identity| >>> parsed_hostdata[identity]["classes"].find { |klass| re.match(klass) } } >>> end >>> collection >>> end >>> >>> def self.agent_search(filter, collection, parsed_hostdata) >>> filter.each do |f| >>> re = regexy_string(f) >>> collection = collection.select { |identity| >>> parsed_hostdata[identity]["agentlist"].find { |klass| re.match(klass) } } >>> end >>> collection >>> end >>> >>> def self.regexy_string(string) >>> if string.match("^/") >>> Regexp.new(string.gsub("\/", "")) >>> else >>> Regexp.new("^#{string}$") >>> end >>> end >>> end >>> end >>> end >>> ======================= >>> >>> But when run mco command getting "No request sent, we did not discover >>> any nodes." >>> >>> # mco shell "uname -a" --do /data/mcollective_inventory/ --dm >>> registrationmonitor -v -I testserver123 >>> Discovering hosts using the registrationmonitor method .... 0 >>> >>> >>> No request sent, we did not discover any nodes. >>> # >>> >>> Also I tried to parse that yaml file in the same way mentioned on >>> registrationmonitor.rb and it working. >>> >>> irb(main):004:0> require 'rubygems' >>> => true >>> irb(main):005:0> require 'yaml' >>> => true >>> irb(main):006:0> data[host] = >>> YAML.load(File.read("/data/mcollective_inventory/testserver123 ")) >>> => {"collectives"=>["mcollective"], "facts"=>{"hardwareisa"=>"x86_64", >>> . >>> . >>> . >>> irb(main):007:0> >>> irb(main):016:0> parsed_hostdata = data >>> irb(main):022:0> parsed_hostdata["testserver123 "]["facts"]["hostname"] >>> => "testserver123 " >>> irb(main):023:0> >>> >>> >>> >>> Thanks >>> Ravi >>> >>> On Saturday, March 11, 2017 at 12:12:35 PM UTC+5:30, R.I.Pienaar wrote: >>>> >>>> change :collectives to "collectives": >>>> >>>> >>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/agent/registration-monitor/discovery/registrationmonitor.rb#L45 >>>> >>>> >>>> will probably have to similarly change :facts here >>>> >>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/agent/registration-monitor/discovery/registrationmonitor.rb#L72-L82 >>>> >>>> >>>> and :classes >>>> >>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/agent/registration-monitor/discovery/registrationmonitor.rb#L93 >>>> >>>> >>>> and :agentlist >>>> >>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/agent/registration-monitor/discovery/registrationmonitor.rb#L101 >>>> >>>> >>>> On Sat, Mar 11, 2017, at 07:06, [email protected] wrote: >>>> > Here is that server inventory data file, >>>> > >>>> > ========================================================= >>>> > --- >>>> > identity: testserver123 >>>> > facts: >>>> > uptime: 383 days >>>> > memoryfree: 5.68 GB >>>> > title: main >>>> > ps: ps -ef >>>> > memoryfree_mb: "5816.89" >>>> > lsbrelease: >>>> > >>>> ":base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch" >>>> >>>> >>>> > memorysize_mb: "8015.77" >>>> > servername: testserver123.server.com >>>> > path: /sbin:/usr/sbin:/bin:/usr/bin >>>> > root_home: /root >>>> > sshfp_dsa: |- >>>> > SSHFP 2 1 37250f7d9eac0e059b6556ddcf6a885750859b4a >>>> > SSHFP 2 2 >>>> > ae228dc1547003913e9b545ad7b04a994266ed66a73d4412cbca9f24437886f6 >>>> > id: root >>>> > swapfree: 7.98 GB >>>> > memorysize: 7.83 GB >>>> > rubysitedir: /usr/lib/ruby/site_ruby/1.8 >>>> > domain: server.com >>>> > uptime_days: "383" >>>> > network_eth1: xx.xx.xx.xx >>>> > uptime_seconds: "35787609" >>>> > kernel: Linux >>>> > concat_basedir: /var/lib/puppet/concat >>>> > macaddress_eth0: 00:23:C6:DD:00:01 >>>> > clientnoop: "false" >>>> > serverip: xx.xx.xx.xx >>>> > netmask_eth0: xx.xx.xx.xx >>>> > facterversion: 2.1.0 >>>> > augeasversion: 1.0.0 >>>> > ipaddress_eth0: xx.xx.xx.xx >>>> > selinux: "false" >>>> > is_virtual: "true" >>>> > processor3: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz >>>> > blockdevice_sdb_size: "2097152" >>>> > kernelversion: 3.8.13 >>>> > processor0: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz >>>> > interfaces: eth0,eth1,lo >>>> > rubyversion: 1.8.7 >>>> > sshdsakey: >>>> > >>>> AAAAB3NzaC1kc3MAAACBAM8zDRlclm28o9xRTMmSYtP8D8V2HgZsKH2m5LY3UqUeOa5L4NamZHEECC18Gd1ZnmAVEFplfQGzaOsOVe3ldx3OVY7/VHGkfAwHRiWNsf8ni87CUzx7Ayt+d0j5dlCbeZXtlpXO0dqFA7NGVn7UGTX+oE2wUFGOe8zaT6FZZf19AAAAFQCyCeA3YrZCT3TJ9ysC2aHI4KqdrwAAAIEAlznBnQRMPrfwp5wtqK/gXWnsTgf8rkHvnXeNoRc+HzJ6tmJvYJebNHk6JBQu4cjfZSFD23DRec45S4/d9DGEodsh80m1IH7dnqi57V2B4OjwjlBjB9jqOBcxMUUBcJhDF498uA3Al31wEaFLoAAACBALkLN0KW4kK2G+5kxVMOQglhaxouu5n+r7QbGiuB5n/anzMgKHA0XOiGYn6yXW9hN2BSudq3QGyW2Bze73qadjLwd7RozhTyYD1B/AX1QkLgiFIV825vrAVD/iQT56mc7QIgySXibMaptNgufd+5F/iXQnyQRTt1bjI3zR6fR4hZ >>>> >>>> >>>> > uptime_hours: "9196" >>>> > puppet_vardir: /var/lib/puppet >>>> > ip6tables_version: 1.4.7 >>>> > lsbdistcodename: n/a >>>> > blockdevices: sda,sdb,sdc >>>> > virtual: xen >>>> > netmask: xx.xxx.xx.xx >>>> > operatingsystem: Linux >>>> > puppetversion: 3.6.2 >>>> > ipaddress_lo: 127.0.0.1 >>>> > hostname: testserver123 >>>> > macaddress_eth1: 00:21:F6:FF:0E:01 >>>> > partitions: sdb1size4095filesystemmsdos" UUID="S2DC-F4ED" >>>> > >>>> TYPE="vfatsda1size4192964filesystemext4mount/uuid927645ac-5cba-460e-a035-29e093d5998dsda2size10474380filesystemext4mount/usruuida1422e95-3b47-4e7b-b021-3a8dba7a001bsda3size6281415filesystemext4mount/varuuid6e2a7fcc-7a79-4a12-86f8-bec1ab40a5b0sda4size2sda5size8385929filesystemext4mount/oemuuid3c96ed2e-5a93-4ca2-b2ef-4617c8f81c98sda6size8385929filesystemext4uuid0c0ba91b-f6e8-478c-a23e-5d889cfbe940sda7size2120579filesystemext4mount/homeuuid29fc3979-70e6-4638-ac42-867306d2bca4 >>>> >>>> >>>> > swapsize_mb: "8192.00" >>>> > netmask_eth1: xx.xx.xx.xx >>>> > netmask_lo: 255.0.0.0 >>>> > ipaddress_eth1: xx.xx.xx.xx >>>> > architecture: x86_64 >>>> > physicalprocessorcount: "1" >>>> > macaddress: 33:DD:43:GD:23 >>>> > processor1: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz >>>> > osfamily: RedHat >>>> > lsbdistrelease: "6.7" >>>> > mtu_eth0: "1500" >>>> > blockdevice_sdc_size: "8589934592" >>>> > network_lo: 127.0.0.0 >>>> > kernelrelease: 3.8.13-98.4.el6.x86_64 >>>> > ipaddress: xx.xx.xx.xx >>>> > lsbdistdescription: Linux Server release 6.7 >>>> > swapfree_mb: "8172.21" >>>> > processorcount: "4" >>>> > fqdn: testserver123.server.com >>>> > mtu_lo: "65536" >>>> > sshrsakey: >>>> > >>>> AAAAB3NzaC1yc2EAAAABIwAAAQEApQc3boaYakhnFwersascMZs9emkYynhugKOY4l7duN4zkxflYysVDKfjvo9+bDDmXaZL9IVZfeFriGrqtw05IDumDGLZqEoOGYkoE/c4cyzRGLh/ROJqkLgM8fhlvi0DlnTuSMAjQagT6RwK+nGj6+mrPVg/Jjh3M57ecorgZAPm37mw3xS2Ks9MzcZ7hiHujxbNEogamFrRkOb9ZK9jzj0DXRDmlS01U0hFWv0P9YKTRI6iBIG1r+G+uZo84Z56qEvYWA+74PZD0DgtJIVUB65CBMXnX/k/WwRqXxGVKxTG72zOe6V2+QCErO7toasdweASFfwe== >>>> >>>> >>>> > sshfp_rsa: |- >>>> > SSHFP 1 1 931fd4af50028d8234asdewr232a76443200af86fd >>>> > SSHFP 1 2 2cbc81201f0c9ca831734sc234f2135f23fd130c323653db0b2c0 >>>> > blockdevice_sda_size: "20402143232" >>>> > network_eth0: xx.xx.xx.xx >>>> > is_pe: "false" >>>> > lsbmajdistrelease: "6" >>>> > iptables_version: 1.4.7 >>>> > filesystems: ext4,iso9660,vfat >>>> > hardwareisa: x86_64 >>>> > gemhome: /usr/lib/ruby/gems/1.8 >>>> > operatingsystemrelease: "6.7" >>>> > swapsize: 8.00 GB >>>> > allow_virtual_packages: "false" >>>> > uniqueid: sdf32345f >>>> > processor2: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz >>>> > serverversion: 3.6.2 >>>> > operatingsystemmajrelease: "6" >>>> > clientversion: 3.6.2 >>>> > mtu_eth1: "1500" >>>> > hardwaremodel: x86_64 >>>> > clientcert: testserver123 >>>> > timezone: CST >>>> > kernelmajversion: "3.8" >>>> > lsbdistid: LinuxServer >>>> > agentlist: >>>> > - nrpe >>>> > - puppet >>>> > - package >>>> > - discovery >>>> > - rpcutil >>>> > - shell >>>> > - service >>>> > classes: [] >>>> > >>>> > collectives: >>>> > - mcollective >>>> > ========================================= >>>> > >>>> > On Saturday, March 11, 2017 at 11:22:21 AM UTC+5:30, R.I.Pienaar >>>> wrote: >>>> > > >>>> > > >>>> > > >>>> > > On Sat, Mar 11, 2017, at 06:46, [email protected] <javascript:> >>>> wrote: >>>> > > > Hey, >>>> > > > >>>> > > > No I did not make any change on that file. I just simply >>>> downloaded .rb >>>> > > > and >>>> > > > .ddl files >>>> > > > from >>>> > > > >>>> > > >>>> https://raw.githubusercontent.com/puppetlabs/mcollective-plugins/master/agent/registration-monitor/discovery/ >>>> >>>> > > > and tried. >>>> > > >>>> > > error suggest the data file is not in the correct format, so show a >>>> data >>>> > > file. >>>> > > >>>> > > Still, a different line in that file would make the error than what >>>> your >>>> > > error shows. >>>> > > >>>> > >>>> > -- >>>> > >>>> > --- >>>> > You received this message because you are subscribed to the Google >>>> Groups >>>> > "mcollective-users" group. >>>> > To unsubscribe from this group and stop receiving emails from it, >>>> send an >>>> > email to [email protected]. >>>> > For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> -- >>>> R.I.Pienaar / www.devco.net / @ripienaar >>>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "mcollective-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "mcollective-users" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/mcollective-users/JZ_6eBGeTqM/unsubscribe >>> . >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> > -- --- You received this message because you are subscribed to the Google Groups "mcollective-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
