ipmi-exporter: fix running on VMs

At the moment, ipmi-exporter is also running on VMs which it
should not be.

Sem-Ver: bugfix
Change-Id: I1e620120d1c442c677a83ba7f37f8e862f634275
diff --git a/releasenotes/notes/fix-ipmi-exporter-3099bb1397c884d4.yaml b/releasenotes/notes/fix-ipmi-exporter-3099bb1397c884d4.yaml
new file mode 100644
index 0000000..b21a50f
--- /dev/null
+++ b/releasenotes/notes/fix-ipmi-exporter-3099bb1397c884d4.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - The IPMI exporter depended on the `ipmi` module being loaded, however, it
+    is the case that the module could be loaded on a virtual machine. This
+    patch instead only runs it on systems that don't expose the ``HYPERVISOR``
+    flag.
\ No newline at end of file
diff --git a/roles/ipmi_exporter/tasks/main.yml b/roles/ipmi_exporter/tasks/main.yml
index b356139..6d93c10 100644
--- a/roles/ipmi_exporter/tasks/main.yml
+++ b/roles/ipmi_exporter/tasks/main.yml
@@ -70,6 +70,14 @@
               - name: ipmi-exporter
                 configMap:
                   name: ipmi-exporter
+            affinity:
+              nodeAffinity:
+                requiredDuringSchedulingIgnoredDuringExecution:
+                  nodeSelectorTerms:
+                    - matchExpressions:
+                        - key: feature.node.kubernetes.io/cpu-cpuid.HYPERVISOR
+                          operator: NotIn
+                          values: ["true"]
             nodeSelector:
               feature.node.kubernetes.io/ipmi: "true"
 
diff --git a/roles/node_feature_discovery/meta/main.yml b/roles/node_feature_discovery/meta/main.yml
index 459a22e..e8aae1c 100644
--- a/roles/node_feature_discovery/meta/main.yml
+++ b/roles/node_feature_discovery/meta/main.yml
@@ -27,5 +27,3 @@
     vars:
       helm_repository_name: node-feature-discovery
       helm_repository_repo_url: https://kubernetes-sigs.github.io/node-feature-discovery/charts
-  - cilium
-  - kube_prometheus_stack
diff --git a/roles/node_feature_discovery/tasks/main.yml b/roles/node_feature_discovery/tasks/main.yml
index 2b9e8cb..c37e1e5 100644
--- a/roles/node_feature_discovery/tasks/main.yml
+++ b/roles/node_feature_discovery/tasks/main.yml
@@ -26,15 +26,3 @@
       master:
         nodeSelector:
           openstack-control-plane: enabled
-      worker:
-        config:
-          sources:
-            custom:
-              - name: ipmi
-                labels:
-                  ipmi: "true"
-                matchFeatures:
-                  - feature: kernel.loadedmodule
-                    matchExpresions:
-                      ipmi_msghandler:
-                        op: Exists