Evan
> Then, couple of random manifest testfile changes later, suddenly
> puppetd "picks up" that a change has been made, and voila! Mode is now
> 640.
>
> I'm using puppet 0.24.4.
>
> Now my guess is that it's normal behaviour, and I missed something
> obvious in my configuration, but I haven't been able to find it for
> last two days, so here it is: my call for help.
There doesn't seem to be anything wrong, and the master should
definitely pick up your changes, but it won't pick them up in less
than 15 seconds. That is, the server doesn't check for changes more
often than every 15 seconds.
Other than that, yeah, you should see your changes.
Does the client have any logs about whether it's recompiling? Does it
say anything in verbose mode about why it's not, if it's not?
--
Always behave like a duck - keep calm and unruffled on the surface but
paddle like the devil underneath. -- Jacob Braude
---------------------------------------------------------------------
Luke Kanies | http://reductivelabs.com | http://madstop.com
I already saw this problem (with 0.24.1 if I remember correctly) if your
manifest contains a syntax error. The puppetmaster won't reload it, but
doesn't spit an error. The error message appeared only when restarting
the puppetmaster.
Note that what you are observing is maybe not what I wrote above, this
bug might have been corrected in the subsequent 0.24.x version.
HTH,
--
Brice Figureau <brice-...@daysofwonder.com>
Setting a variable in the external node script (like
$parameters{'su_spam'} = 'true';) or in the site.pp file (like $su_spam
= 'true') should behave the same. But they don't.
If printed both variables look the same. But when tested with if
statements in templates, the ones set in site.pp work while the ones set
by the external script do not.
Here is the test I just ran, setting su_spam via site.pp and su_spamprs
via the external script (both set to 'true')
Template:
# Testing
# su_devel = '<%= su_devel %>'
# su_spam = '<%= su_spam %>'
# if spam== <% if su_spam == 'true' %>true<% else %>false<% end %>
# if spam=~ ^ <% if su_spam =~ /^true/ %>true<% else %>false<% end %>
# if spam=~ $ <% if su_spam =~ /true$/ %>true<% else %>false<% end %>
# if spam=~ ^$ <% if su_spam =~ /^true$/ %>true<% else %>false<% end %>
# if spam=~ // <% if su_spam =~ /true/ %>true<% else %>false<% end %>
# su_spamprs = '<%= su_spamprs %>'
# if spamprs== <% if su_spamprs == 'true' %>true<% else %>false<% end %>
# if spamprs =~ ^ <% if su_spamprs =~ /^true/ %>true<% else %>false<%
end %>
# if spamprs =~ $ <% if su_spamprs =~ /true$/ %>true<% else %>false<%
end %>
# if spamprs =~ ^$ <% if su_spamprs =~ /^true$/ %>true<% else %>false<%
end %>
# if spamprs =~ // <% if su_spamprs =~ /true/ %>true<% else %>false<%
end %>
#
Results:
# Testing
# su_devel = 'false'
# su_spam = 'true'
# if spam== true
# if spam=~ ^ true
# if spam=~ $ true
# if spam=~ ^$ true
# if spam=~ // true
# su_spamprs = 'true'
# if spamprs== false
# if spamprs =~ ^ false
# if spamprs =~ $ false
# if spamprs =~ ^$ false
# if spamprs =~ // false
#
Has anyone seen this behavior or have a work around?
It appears that variables read from an external script are not defined
correctly. But I haven't found how yet. Still new to ruby, so I haven't
gotten too deep in this yet.
Running 0.24.4 on both server and client. Server is on Ubuntu 7.10 and
client is CentOs 5
Thanks,
Steven
Turns out the variables defined in a manifest are of class 'String', but
variables defined from an external script are of class 'TrueClass'. This
broke all comparisons, since TrueClass need to be converted to a string
before doing string comparisons.