diff --git a/elements/ironic-agent/package-installs.yaml b/elements/ironic-agent/package-installs.yaml
index 62fadc280..62a691aa4 100644
--- a/elements/ironic-agent/package-installs.yaml
+++ b/elements/ironic-agent/package-installs.yaml
@@ -1,2 +1,5 @@
 tgt:
 curl:
+# this one requires workaround with dnf - see 80-ironic-agent for details
+dmidecode:
+ipmitool:
diff --git a/elements/ironic-agent/post-install.d/80-ironic-agent b/elements/ironic-agent/post-install.d/80-ironic-agent
index 72811d8f0..715266b9d 100755
--- a/elements/ironic-agent/post-install.d/80-ironic-agent
+++ b/elements/ironic-agent/post-install.d/80-ironic-agent
@@ -7,6 +7,12 @@ set -eu
 set -o pipefail
 
 install-packages -e python-dev git cloud-init
+# dnf removes unused dependencies by default. As we installed cloud-init before
+# dmidecode, dnf removes dmidecode above as an unused dependency.
+# TODO(dtantsur): use `dnf mark` from dnf 1.1.1 in install-packages once this
+# command is widely available.
+install-packages dmidecode
+
 rm -rf /tmp/ironic-python-agent
 
 case "$DIB_INIT_SYSTEM" in