Just to clarify, using the debug flag on the client side, I get: Debug: Facter: fact "os" has resolved to { architecture => "amd64", family => "FreeBSD", hardware => "amd64", name => "FreeBSD", release => { full => "11.2-RELEASE-p14", major => "11", minor => "2-RELEASE-p14" {{ }}} }. Which means the fact works correctly with regards to getting the info out of the operating system. Furthermore, other nodes which use older puppet versions such as 4, work correctly. Since the debug flag at the client alters the behaviour, I'd say this is a bug not of the puppetmaster but of the client. Furthermore, I've been playing with some notice messages on the side of the puppetmaster to understand what's being transmitted by the buggy client to the master. Here's what comes across without the debug flag: os is a Struct[\{'architecture' => String, 'family' => String, 'hardware' => String, 'name' => String}] and here is what comes across with the debug flag: {{os is a Struct[{'architecture' => String, 'family' => String, 'hardware' => String, 'name' => String, 'release' => Struct[ {'full' => String, 'major' => String, 'minor' => String} ]}]}} So as you can see, when running without the debug flag, the nested Struct (the release key) gets swallowed somewhere along the way. |