Donavan,
Thanks for the explanation. I now have a better understanding of
how the Host resource works.
Cheers,
Henry
On Aug 7, 3:20 pm, donavan <[email protected]> wrote:
> On Aug 6, 8:50 am, CraftyTech <[email protected]> wrote:
>
> > So, should the exporting
> > of the necessary values be done in the same class as the collection,
> > or should I just outline it on my default node definition. Here's
> > what I have so far (and it's not working):
>
> Your example is pretty close. I don't see an obvious reason for it to
> fail.
>
> I think you may into two issues in general. Nodes with both
> 'webserver' & 'mailserver' would export duplicate Host resources. That
> gets solved if you move the @@host to a third class and pass
> variables, but now you're compile order dependent. Setting
> puppetvariables (in manifest) or detecting based on class seems
> difficult/unreliable. The best solution for you may be a fact or
> variable on your nodes describing which "group" they're part of.
>
> node web {
> $group = ["web"]
> include webserver
> include host::collect}
>
> node webmail {
> $group = ["web", "mail"]
> include webserver
> include mailserver
> include host::collect}
>
> class webserver { include host::export }
> class mailserver { include host::export }
> class host::export { @@host{ "$fqdn": ip => $ipaddress, host_aliases
> => $hostname, tag => $group } }
> class host::collect { Host <<| tags == $group |>> }
>
> > Another thing, how do I ensure that the contents of "file" are what
> > was collected via the "Host" collection? If someone has a similar
> > scenario running, please share your ideas...
>
> There's no need for the 'file { "/etc/hosts": }' resource. The Host
> Type should take care of that. For example 'hosts' may be stored in a
> different location or format.
>
> I do it a bit differently. Only nodes with "important" classes export
> their entries. All nodes will collect all relevant entries. This
> should work as an example.
>
> node dns1 {
> $location = ["chicago"]
> include dns
> include host::collect}
>
> node ldap1 {
> $location = ["chicago"]
> include ldap
> include host::collect}
>
> node admin1 {
> $location = ["austin"]
> include dns
> include ldap
> include host::collect}
>
> node db1 {
> $location = ["austin"]
> include host::collect}
>
> node db2 {
> $location = ["chicago"]
> include host::collect
>
> }
>
> class dns { include host::export }
> class ldap { include host::export }
> class host::export { @@host{ "$fqdn": ip => $ipaddress, host_aliases
> => $hostname, tag => $location } }
> class host::collect { Host <<| tags == $location |>> }
--
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.