diff --git a/dib/ironic-python-agent-ramdisk/cleanup.d/99-ramdisk-create b/dib/ironic-python-agent-ramdisk/cleanup.d/99-ramdisk-create
index 03c8363..a868d4d 100755
--- a/dib/ironic-python-agent-ramdisk/cleanup.d/99-ramdisk-create
+++ b/dib/ironic-python-agent-ramdisk/cleanup.d/99-ramdisk-create
@@ -33,15 +33,18 @@ sudo find . -xdev \
     -path './tmp/*' -prune -o \
     -path './boot/*' -prune -o \
     -path './root/.cache' -prune -o \
+    -path "*site-packages/babel/locale-data/*" -prune -o \
     -path './usr/include/*' -prune -o \
     -path './usr/lib/locale/*' -prune -o \
     -path './usr/share/doc/*' -prune -o \
     -path './usr/share/man/*' -prune -o \
     -path './usr/share/info/*' -prune -o \
     -path './usr/share/licenses/*' -prune -o \
+    -path './usr/share/locale/*' -prune -o \
     -path './usr/share/misc/m*' -prune -o \
     -path './usr/src/kernels/*' -prune -o \
     -path './var/cache/*' -prune -o \
+    -path './var/log/*' -prune -o \
     -name '*.pyc' -prune -o \
     -name '*.pyo' -prune -o \
     -print | sudo cpio -o -H newc | ${DIB_IPA_COMPRESS_CMD} > ${IMAGE_PATH}.initramfs
diff --git a/dib/ironic-python-agent-ramdisk/environment.d/20-ipa-distro-family.bash b/dib/ironic-python-agent-ramdisk/environment.d/20-ipa-distro-family.bash
new file mode 100644
index 0000000..95a1c15
--- /dev/null
+++ b/dib/ironic-python-agent-ramdisk/environment.d/20-ipa-distro-family.bash
@@ -0,0 +1,6 @@
+# TODO(dtantsur): verify if opensuse can be added here
+if [[ $DISTRO_NAME =~ (fedora|centos|centos7|rhel|rhel7) ]]; then
+    export IPA_DISTRO_FAMILY=rh
+else
+    export IPA_DISTRO_FAMILY=other
+fi
diff --git a/dib/ironic-python-agent-ramdisk/finalise.d/99-remove-extra-packages b/dib/ironic-python-agent-ramdisk/finalise.d/99-remove-extra-packages
deleted file mode 100755
index 72b4210..0000000
--- a/dib/ironic-python-agent-ramdisk/finalise.d/99-remove-extra-packages
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-
-if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
-    set -x
-fi
-set -eu
-set -o pipefail
-
-# TODO(lucasagomes): optimize the ramdisk for other OSs
-if [ $DISTRO_NAME = 'fedora' ] ; then
-
-    _remove_yum=''
-    if [ $DIB_RELEASE -ge 22 ]; then
-        # if we are on F22, we can remove yum if there, because it has
-        # been superseeded by dnf
-        _remove_yum='yum'
-    fi
-
-    install-packages -e kernel-debug-devel gcc fedora-logos \
-                    rsync pykickstart \
-                    genisoimage tcpdump \
-                    man-db kbd-misc \
-                    plymouth cronie ${_remove_yum}
-
-    ${YUM:-yum} clean all
-
-    # Rebuilding the rpm database after removing packages will reduce
-    # its size
-    rpm --rebuilddb
-
-fi
diff --git a/dib/ironic-python-agent-ramdisk/package-installs.yaml b/dib/ironic-python-agent-ramdisk/package-installs.yaml
index f63487f..e940a08 100644
--- a/dib/ironic-python-agent-ramdisk/package-installs.yaml
+++ b/dib/ironic-python-agent-ramdisk/package-installs.yaml
@@ -18,3 +18,44 @@ kmod:
 psmisc:
 dosfstools:
 mdadm:
+
+# Unnecessary packages to remove. We run all removals in pre-install phase, to
+# avoid breaking installs that happen in install phase.
+
+cloud-init:
+    phase: pre-install.d
+    uninstall: true
+git:
+    phase: pre-install.d
+    uninstall: true
+kbd:
+    phase: pre-install.d
+    uninstall: true
+man-db:
+    phase: pre-install.d
+    uninstall: true
+rsync:
+    phase: pre-install.d
+    uninstall: true
+
+# Distro-specific uninstalls
+cronie:
+    phase: pre-install.d
+    uninstall: true
+    when: IPA_DISTRO_FAMILY = rh
+kernel-debug-devel:
+    phase: pre-install.d
+    uninstall: true
+    when: IPA_DISTRO_FAMILY = rh
+plymouth:
+    phase: pre-install.d
+    uninstall: true
+    when: IPA_DISTRO_FAMILY = rh
+teamd:
+    phase: pre-install.d
+    uninstall: true
+    when: IPA_DISTRO_FAMILY = rh
+yum:
+    phase: pre-install.d
+    uninstall: true
+    when: DISTRO_NAME = fedora
diff --git a/dib/ironic-python-agent-ramdisk/post-install.d/80-ironic-python-agent-ramdisk b/dib/ironic-python-agent-ramdisk/post-install.d/80-ironic-python-agent-ramdisk
index d87cd29..7e51d0a 100755
--- a/dib/ironic-python-agent-ramdisk/post-install.d/80-ironic-python-agent-ramdisk
+++ b/dib/ironic-python-agent-ramdisk/post-install.d/80-ironic-python-agent-ramdisk
@@ -8,10 +8,6 @@ set -o pipefail
 
 DIB_IPA_ENABLE_RESCUE=${DIB_IPA_ENABLE_RESCUE:-true}
 
-install-packages -e cloud-init
-
-rm -rf /tmp/ironic-python-agent
-
 if $DIB_IPA_ENABLE_RESCUE; then
     # Make sure rescue works
     mkdir -p /etc/ipa-rescue-config
diff --git a/dib/ironic-python-agent-ramdisk/post-install.d/99-remove-extra-packages b/dib/ironic-python-agent-ramdisk/post-install.d/99-remove-extra-packages
new file mode 100755
index 0000000..629b6c0
--- /dev/null
+++ b/dib/ironic-python-agent-ramdisk/post-install.d/99-remove-extra-packages
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
+    set -x
+fi
+set -eu
+set -o pipefail
+
+rm -rf /tmp/ironic-python-agent
+
+# TODO(dtantsur): implement the same for debian-based systems
+case "$DISTRO_NAME" in
+    fedora|centos|centos7|rhel|rhel7)
+        ${YUM:-yum} clean all
+        # Rebuilding the rpm database after removing packages will reduce
+        # its size
+        rpm --rebuilddb
+        ;;
+esac