updated, and hopefully finished:

Facter.add(:bp_nagios_hostgroups) do
    setcode do

        if FileTest.exists?("/var/lib/puppet/classes.txt")
            bp_nagios_hostgroups = ""
            File.open("/var/lib/puppet/classes.txt") { |file|
                file.each { |line|
                    if line =~ /^(.+)::nagios-client/
                        bp_nagios_hostgroups << $1 + " "
                    end
                }
            }
            next bp_nagios_hostgroups if bp_nagios_hostgroups
        end
        nil
    end
end


On 8 June 2011 15:18, Chris Phillips <ch...@untrepid.com> wrote:

> Actually, I think I see what you mean here, I have a custom fact mid write
> which looks like this:
>
> Facter.add(:nagios_hostgroups) do
>     setcode do
>
>         if FileTest.exists?("/var/lib/puppet/classes.txt")
>             nagios_hostgroups = ""
>             File.open("/var/lib/puppet/classes.txt") { |file|
>                 file.each { |line|
>                     if line =~ /(\S+)::nagios_client/
>                         nagios_hostgroups << $1 + " "
>                     end
>                 }
>             }
>             next nagios_hostgroups if nagios_hostgroups
>         end
>         nil
>     end
> end
>
> So once finished this fact will return a list of all class names which are
> included with the "nagios_client" namespace. So there's actually hopefully
> nothing else to do at all here, no temp files or anything, it just requires
> a naming convention in the modules to be followed.
>
>
> On 8 June 2011 15:00, Brian Gallew <g...@gallew.org> wrote:
>
>> I solved this in a similar manner.  I wrote a custom fact (which
>> essentially returned /var/lib/puppet/state/classes.txt) and then a custom
>> function that generated a list of hostgroups based on that.
>>
>>  On Wed, Jun 8, 2011 at 6:47 AM, Chris Phillips <ch...@untrepid.com>wrote:
>>
>>>
>>>
>>> On 8 June 2011 13:30, Martijn Grendelman <mart...@iphion.nl> wrote:
>>>
>>>> Hi,
>>>>
>>>> > i want to archive the following:
>>>> >
>>>> > i define an exported ressource for HostX to be monitored in nagios:
>>>> >
>>>> >         @@nagios_host { $fqdn:
>>>> >                 ensure     => present,
>>>> >                 alias      => $hostname,
>>>> >                 address    => $ipadress,
>>>> >                 use        => "generic-host",
>>>> >                 hostgroups => ubuntu,
>>>> >                 target     => $icingahostfile,
>>>> >         }
>>>> >
>>>> > That fine and works as expected and HostX is in hostgroup ubuntu.
>>>> > HostX has included a class ssh which installs the ssh services and
>>>> > configures them. Inside this class i want to define that HostX is also
>>>> in
>>>> > hostgroup ssh-server.
>>>> > And another class, which puts the node in another environment => there
>>>> i
>>>> > want to define, that HostX is in hostgroup testing-server and so on.
>>>> > How do i archive that? How must the definition inside all these
>>>> classes
>>>> > look like?
>>>>
>>>> That's a lot more difficult than you might expect.
>>>>
>>>> I recently solved it, by collecting all the necessary hostgroups for a
>>>> host in a file using 'concat', and creating a custom fact (hostgroups)
>>>> that joins all the lines in the hostgroups-file together, for use with
>>>> nagios_host's hostgroups parameter.
>>>>
>>>> The biggest drawback is that it takes two puppet runs on the target
>>>> (first
>>>> one for populating the hostgroups-file, so that the custom fact is set
>>>> properly on the second run) before the nagios server can collect the
>>>> exported hosts, so it takes a while.
>>>>
>>>>
>>> Well that's mad... I literally just was about to ask the exact same
>>> question after a month of wondering...
>>>
>>> so where do you put this fact? Sounds like it is on the nagios "client"
>>> side, which makes sense in terms of pulling it out, but how does it get in
>>> there in the first place? Can you show how this file on each client is
>>> managed? That seems to be the only bit I'm not clear on. Are you just
>>> putting in a single word for each class? Are you at all able to manage the
>>> class being removed from the client? Would you need to routinely purge the
>>> file? have a initial stage class that wipes the file?
>>>
>>> Thanks
>>>
>>> Chris
>>>
>>>  --
>>> You received this message because you are subscribed to the Google Groups
>>> "Puppet Users" group.
>>> To post to this group, send email to puppet-users@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> puppet-users+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/puppet-users?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Puppet Users" group.
>> To post to this group, send email to puppet-users@googlegroups.com.
>> To unsubscribe from this group, send email to
>> puppet-users+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/puppet-users?hl=en.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to