Well... that's why you have scopes, right? So that you don't need to
know all variables in your tree, just the local ($var) and globals
($::var). At least it's how I understood it.
In any case, the problem is not the variable name (I used other local
variable names, and same problem happens). The problem is that
hiera('netmask') is picking up a fact, when I believe it shouldn't.
Thanks!
Pablo
On 03/30/2012 04:06 PM, Brian Gallew wrote:
I would imagine this has to do with the whole, "you can't override
variables" thing that comes with a declarative language. Truly, if
you want do to this you need to just change the variable names so they
won't conflict with the facter values. This is the primary reason
(IMO) that example42 use my_ to prefix just about every variable they use.
On Fri, Mar 30, 2012 at 7:02 AM, Pablo Fernandez
<[email protected] <mailto:[email protected]>> wrote:
I have trying to dig more into this, and I found out the problem
is not the scope of the variable, but hiera!
So, it seems like hiera('netmask') is actually looking into the
node's facts! Is this the expected behavior?
This is my hiera.yaml:
:backends:
- puppet
:hierarchy:
- %{hostname}
- %{environment}
- group_%{group0}
- group_%{group1}
- group_%{group2}
- group_%{group3}
- group_%{group4}
- group_%{group5}
- group_%{group6}
- group_%{group7}
- group_%{group8}
- group_%{group9}
:puppet:
:datasource: data
Most of those classes don't even exist. And data::myhost certainly
doesn't.
And the place it should be looking into the right variable is:
class data::group_all {
$netmask = "255.255.252.0"
}
(in this case, $group1='all')
I have tried, for the sake of testing, to change the variable to
something different (and the hiera lookup) and it does the right
thing, so I am quite sure it's actually conflicting with the
"netmask" fact.
Any ideas?
Thanks!
Pablo
On 03/30/2012 11:59 AM, Pablo Fernandez wrote:
Hi,
I have just found something very weird. I define this:
define networking::basic_interface ($ip, $netmask =
hiera('netmask'), $gateway = hiera('gateway')) {
file { "/etc/sysconfig/network-scripts/ifcfg-${name}" :
content =>
"DEVICE=${name}\nIPADDR=${ip}\nNETMASK=${netmask}\nGATEWAY=${gateway}\nONBOOT=yes\n",
mode => '0644', owner => 'root', group => 'root',
}
}
And create the resource doing:
networking::basic_interface { "eth0:0": ip => '1.2.3.4' }
So, the variables $netmask and $gateway should pick up their
default values, that are taken from Hiera. But then, when I
apply the manifests in the node, the value picked up is the
one from Facter.
To summarize: the content of the file takes ${netmask} which
is a parameter of the define, but it turns out that the fact
$::netmask has preference over it. How is it possible?
Thanks!
Pablo
--
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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:puppet-users%[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.