On Saturday, July 12, 2014 6:05:35 AM UTC-5, Jose Luis Ledesma wrote:
>
> Hi all,
>
> I have found a problem setting up exported resources. The problem is
> that for every hosts I want to define in its /etc/hosts the primary ip, but
> I want to export a secondary ip with the same hostname that will be
> collected just by one server. So I defined:
>
>
>
> @@host { $::hostname :
>
> ensure => present,
>
> ip => $secondary_ip,
>
> }
>
>
>
> host { $::hostname :
>
> ensure => present,
>
> ip => $primary_ip
>
> }
>
>
>
>
>
> but when I launch puppet a duplicated resource arises:
>
>
>
> # puppet agent -t
>
> Info: Retrieving plugin
>
> Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
> Duplicate declaration: Host[XXXXX] is already declared in file
> /etc/puppet/manifests/init.pp:15; cannot redeclare at
> /etc/puppet/manifests/init.pp:5 on node XXXX
>
> Warning: Not using cache on failed catalog
>
> Error: Could not retrieve catalog; skipping run
>
>
>
> I have just implemented a workaround:
>
>
> @@host { "${::hostname}-secondary" :
>
> ensure => present,
>
> ip => $secondary_ip,
>
> host_alises => $::hostname,
>
> }
>
>
>
> but I wanted to know if there is a better solution.
>
>
>
It may be possible to wrap the duplicate Host resource in an exported
defined type instance:
define site::secondary_host ($ip, $ensure = 'present') {
host { $title: ip => $ip, ensure => $ensure }
}
@@site::secondary_host { ${::hostname}:
ip => $secondary_ip
}
You will not be able to collect that resource on the node that exports it
(you would again -- and rightfully -- get a duplicate resource complaint),
but I think otherwise you should be ok. Specifically, I think Puppet will
avoid evaluating the definition body for instances that are exported, until
and unless they are collected. If that indeed works then it may be a bit
better than your solution because it makes the node's hostname the primary
name of the hosts entry, rather than an alias.
John
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/b2350416-f2aa-4e0c-8f90-a8c31021e37e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.