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 <[email protected]> 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 <[email protected]> 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 <[email protected]>wrote:
>>
>>>
>>>
>>> On 8 June 2011 13:30, Martijn Grendelman <[email protected]> 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 [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> 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 [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.