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