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.

Reply via email to