Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
FACT 4.0.46
-
None
Description
Puppet Version: 7.0.0
Puppet Server Version: 6.14.1
OS Name/Version: Ubuntu 16.04
Hi!
- Sorry for the ugly issue title
- this might be better as a facter issue, but I'm not sure
I've the following fact:
Facter.add('sach_passalgo') do
|
confine :osfamily => 'RedHat'
|
confine { Facter::Core::Execution.which('authconfig') }
|
|
setcode do
|
authconfig_out = `authconfig --test`
|
hash_algo = 'unknown'
|
authconfig_out.each_line do |line|
|
hash_algo = line.split(' ')[4] if line.include? 'password hashing'
|
end
|
hash_algo
|
end
|
end
|
I assume that this fact never exists on a Ubuntu/Debian system, because the fact is confined to osfamily RedHat. I expect `undef` as return value if I try to access this fact on a Debian node. This seems to be correct for Puppet 6:
notify { "test${facts['sach_passalgo']}":}
|
|
$var = $facts['sach_passalgo'] ? {
|
undef => 'works',
|
default => $facts['sach_passalgo'],
|
}
|
|
notify { "test1{$var}":}
|
this produces on puppet 6.14.0:
root@* ~ # puppet apply test.pp
|
Notice: Compiled catalog for * in environment production in 0.02 seconds
|
Notice: test
|
Notice: /Stage[main]/Main/Notify[test]/message: defined 'message' as 'test'
|
Notice: works
|
Notice: /Stage[main]/Main/Notify[test1works]/message: defined 'message' as 'test1works'
|
Notice: Applied catalog in 0.27 seconds
|
root@* ~ #
|
now with puppet 7:
root@* ~ # puppet apply test.pp
|
Notice: Compiled catalog for * in environment production in 0.04 seconds
|
Notice: test
|
Notice: /Stage[main]/Main/Notify[test]/message: defined 'message' as 'test'
|
Notice: test1
|
Notice: /Stage[main]/Main/Notify[test1]/message: defined 'message' as 'test1'
|
Notice: Applied catalog in 0.21 seconds
|
root@* ~ #
|
now I update the test code like this:
notify { "test${facts['sach_passalgo']}":}
|
|
$var = $facts['sach_passalgo'] ? {
|
'' => 'empty string',
|
undef => 'undef',
|
default => $facts['sach_passalgo'],
|
}
|
|
notify { $var:}
|
which produces the following output on puppet 7:
root@* ~ # puppet apply test.pp
|
Notice: Compiled catalog for * in environment production in 0.05 seconds
|
Notice: test
|
Notice: /Stage[main]/Main/Notify[test]/message: defined 'message' as 'test'
|
Notice: empty string
|
Notice: /Stage[main]/Main/Notify[empty string]/message: defined 'message' as 'empty string'
|
Notice: Applied catalog in 0.28 seconds
|
root@* ~ #
|
A fact that was undef on Puppet 6 turned into empty string in Puppet 7?
Actual Behavior:
expect that the fact is still undef
let me know if you need more debugging/testing or any information.