... case $::kernel { 'linux': { ...This caught my eye because I had been explicitly capitalizing the 'L' in the $::kernel fact for years. I thought to myself "Is the fact capitalized?"
zeratul:~# facter -p kernel LinuxWhat's going on here? Is the case operator insensitive?
case $::kernel { 'sunos': { notify { $::kernel: }} } notice: SunOS notice: /Stage[main]//Notify[SunOS]/message: defined 'message' as 'SunOS'Wow. Is the '==' operator in Puppet case-insensitive as well?
if $::kernel == 'sunos' { notify { 'lasers': } } notice: lasers notice: /Stage[main]//Notify[lasers]/message: defined 'message' as 'lasers'Is this a problem with facter or puppet?
if "YES" == "yes" { notify { "false is true": } } notice: false is true notice: /Stage[main]//Notify[false is true]/message: defined 'message' as 'false is true'Seriously? Yep. Turns out the '==' operator is case-insensitive. The '=~' is case-sensitive, but you have to use regular expression syntax in order to use it:
if "YES" =~ /^yes$/ { notify { "false is true": } } notice: Finished catalog run in 1.30 secondsNote that we should use '^$' to enclose the string so we don't accidentally get a substring match.
Tested on Puppet 2.7.x and 3.2.x