Problem:
Yesterday i updated a client from puppet 3.8.7 to puppet 4.10.9 and is_virtual fact is no more available. The client is a physical server, so i’m expecting to have reported is_virtual=false. For a virtual machine, instead, with the same puppet version, is_virtual=true fact exists.
If i run facter -p is_virtual on both hosts i get false on the first, and true on the latter. But if i search in the facts for the physical server, is_virtual is not available as fact. This break some reports and some scripts we’re using to extract the list of the physical machines.
Expected outcome:
Have is_virtual fact available also when false.
Foreman and Proxy versions:
- foreman-1.15.6-1.el7.noarch
- foreman-proxy-1.15.6-1.el7.noarch
- puppetserver-2.8.1-1.el7.noarch
Foreman and Proxy plugin versions:
Other relevant data:
puppet agent -t -ddd | grep is_virtual
Debug: Facter: fact “is_virtual” has resolved to false.
I implemented a workaround for using the virtual=physical fact, but is not what i’m looking because splits the set in more than two groups (physical and virtual) creating n+1 groups where n is the number of virtualization platforms (vmware, kvm, xen).