diff --git a/cdist/conf/type/__chroot_mount/gencode-local b/cdist/conf/type/__chroot_mount/gencode-local
new file mode 100755
index 00000000..2c3b51b8
--- /dev/null
+++ b/cdist/conf/type/__chroot_mount/gencode-local
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# 2016 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see <http://www.gnu.org/licenses/>.
+#
+
+chroot="/$__object_id"
+
+if [ -f "$__object/parameter/manage-resolv-conf" ]; then
+   suffix="$(cat "$__object/parameter/manage-resolv-conf")"
+   resolv_conf="${chroot}/etc/resolv.conf"
+   original_resolv_conf="${resolv_conf}.${suffix}"
+   cat << DONE
+$__remote_exec $__target_host << EOSSH
+if [ -f "${resolv_conf}" ]; then
+   mv "${resolv_conf}" "${original_resolv_conf}"
+fi
+# copy hosts resolv.conf into chroot
+cp /etc/resolv.conf "${resolv_conf}"
+EOSSH
+DONE
+fi
diff --git a/cdist/conf/type/__chroot_mount/gencode-remote b/cdist/conf/type/__chroot_mount/gencode-remote
index 6d855f41..a3b94b33 100755
--- a/cdist/conf/type/__chroot_mount/gencode-remote
+++ b/cdist/conf/type/__chroot_mount/gencode-remote
@@ -41,8 +41,4 @@ mountpoint -q "${chroot}/dev/pts" \
 [ -d "${chroot}/tmp" ] || mkdir -m 1777 "${chroot}/tmp"
 mountpoint -q "${chroot}/tmp" \
    || mount -t tmpfs -o mode=1777,strictatime,nodev,nosuid tmpfs "${chroot}/tmp"
-
-if [ ! -f "${chroot}/etc/resolv.conf" ]; then
-   cp /etc/resolv.conf "${chroot}/etc/"
-fi
 DONE
diff --git a/cdist/conf/type/__chroot_mount/man.rst b/cdist/conf/type/__chroot_mount/man.rst
index 0d7cdce3..41fd496b 100644
--- a/cdist/conf/type/__chroot_mount/man.rst
+++ b/cdist/conf/type/__chroot_mount/man.rst
@@ -1,5 +1,5 @@
 cdist-type__chroot_mount(7)
-===================================
+===========================
 
 NAME
 ----
@@ -18,7 +18,17 @@ None
 
 OPTIONAL PARAMETERS
 -------------------
-None
+manage-resolv-conf
+    manage /etc/resolv.conf inside the chroot.
+    Use the value of this parameter as the suffix to save a copy
+    of the current /etc/resolv.conf to /etc/resolv.conf.$suffix.
+    This is used by the __chroot_umount type to restore the initial
+    file content when unmounting the chroot.
+
+
+BOOLEAN PARAMETERS
+------------------
+None.
 
 
 EXAMPLES
@@ -28,6 +38,9 @@ EXAMPLES
 
     __chroot_mount /path/to/chroot
 
+    __chroot_mount /path/to/chroot \
+      --manage-resolv-conf "some-known-string"
+
 
 AUTHORS
 -------
@@ -36,7 +49,7 @@ Steven Armstrong <steven-cdist--@--armstrong.cc>
 
 COPYING
 -------
-Copyright \(C) 2012 Steven Armstrong. You can redistribute it
+Copyright \(C) 2012-2017 Steven Armstrong. You can redistribute it
 and/or modify it under the terms of the GNU General Public License as
 published by the Free Software Foundation, either version 3 of the
 License, or (at your option) any later version.
diff --git a/cdist/conf/type/__chroot_mount/parameter/optional b/cdist/conf/type/__chroot_mount/parameter/optional
new file mode 100644
index 00000000..27928f2c
--- /dev/null
+++ b/cdist/conf/type/__chroot_mount/parameter/optional
@@ -0,0 +1 @@
+manage-resolv-conf
diff --git a/cdist/conf/type/__chroot_umount/gencode-local b/cdist/conf/type/__chroot_umount/gencode-local
new file mode 100755
index 00000000..a6793534
--- /dev/null
+++ b/cdist/conf/type/__chroot_umount/gencode-local
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# 2016 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see <http://www.gnu.org/licenses/>.
+#
+
+chroot="/$__object_id"
+
+if [ -f "$__object/parameter/manage-resolv-conf" ]; then
+   suffix="$(cat "$__object/parameter/manage-resolv-conf")"
+   resolv_conf="${chroot}/etc/resolv.conf"
+   original_resolv_conf="${resolv_conf}.${suffix}"
+cat << DONE
+$__remote_exec $__target_host << EOSSH
+if [ -f "${original_resolv_conf}" ]; then
+   # restore original /etc/resolv.conf that we moved out of the way
+   # in __chroot_mount/gencode-local
+   mv -f "${original_resolv_conf}" "${resolv_conf}"
+fi
+EOSSH
+DONE
+fi
diff --git a/cdist/conf/type/__chroot_umount/gencode-remote b/cdist/conf/type/__chroot_umount/gencode-remote
index caf2c40c..bb854efe 100755
--- a/cdist/conf/type/__chroot_umount/gencode-remote
+++ b/cdist/conf/type/__chroot_umount/gencode-remote
@@ -26,7 +26,6 @@ umount -l "${chroot}/dev/pts"
 umount -l "${chroot}/dev"
 umount -l "${chroot}/sys"
 umount -l "${chroot}/proc"
-rm -f "${chroot}/etc/resolv.conf"
 if [ -d "${chroot}/etc/resolvconf/resolv.conf.d" ]; then
    # ensure /etc/resolvconf/resolv.conf.d/tail is not linked to \
    # e.g. /etc/resolvconf/resolv.conf.d/original
diff --git a/cdist/conf/type/__chroot_umount/man.rst b/cdist/conf/type/__chroot_umount/man.rst
index ff116da5..2a15f362 100644
--- a/cdist/conf/type/__chroot_umount/man.rst
+++ b/cdist/conf/type/__chroot_umount/man.rst
@@ -18,7 +18,17 @@ None
 
 OPTIONAL PARAMETERS
 -------------------
-None
+manage-resolv-conf
+    manage /etc/resolv.conf inside the chroot.
+    Use the value of this parameter as the suffix to find the backup file
+    that was saved by the __chroot_mount.
+    This is used by the to restore the initial file content when unmounting
+    the chroot.
+
+
+BOOLEAN PARAMETERS
+------------------
+None.
 
 
 EXAMPLES
@@ -28,6 +38,9 @@ EXAMPLES
 
     __chroot_umount /path/to/chroot
 
+    __chroot_umount /path/to/chroot \
+      --manage-resolv-conf "some-known-string"
+
 
 SEE ALSO
 --------
@@ -41,7 +54,7 @@ Steven Armstrong <steven-cdist--@--armstrong.cc>
 
 COPYING
 -------
-Copyright \(C) 2012 Steven Armstrong. You can redistribute it
+Copyright \(C) 2012-2017 Steven Armstrong. You can redistribute it
 and/or modify it under the terms of the GNU General Public License as
 published by the Free Software Foundation, either version 3 of the
 License, or (at your option) any later version.
diff --git a/cdist/conf/type/__chroot_umount/manifest b/cdist/conf/type/__chroot_umount/manifest
new file mode 100755
index 00000000..a6793534
--- /dev/null
+++ b/cdist/conf/type/__chroot_umount/manifest
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# 2016 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see <http://www.gnu.org/licenses/>.
+#
+
+chroot="/$__object_id"
+
+if [ -f "$__object/parameter/manage-resolv-conf" ]; then
+   suffix="$(cat "$__object/parameter/manage-resolv-conf")"
+   resolv_conf="${chroot}/etc/resolv.conf"
+   original_resolv_conf="${resolv_conf}.${suffix}"
+cat << DONE
+$__remote_exec $__target_host << EOSSH
+if [ -f "${original_resolv_conf}" ]; then
+   # restore original /etc/resolv.conf that we moved out of the way
+   # in __chroot_mount/gencode-local
+   mv -f "${original_resolv_conf}" "${resolv_conf}"
+fi
+EOSSH
+DONE
+fi
diff --git a/cdist/conf/type/__chroot_umount/parameter/optional b/cdist/conf/type/__chroot_umount/parameter/optional
new file mode 100644
index 00000000..27928f2c
--- /dev/null
+++ b/cdist/conf/type/__chroot_umount/parameter/optional
@@ -0,0 +1 @@
+manage-resolv-conf
diff --git a/cdist/conf/type/__install_chroot_mount/parameter b/cdist/conf/type/__install_chroot_mount/parameter
new file mode 120000
index 00000000..5b5c9e20
--- /dev/null
+++ b/cdist/conf/type/__install_chroot_mount/parameter
@@ -0,0 +1 @@
+../__chroot_mount/parameter
\ No newline at end of file
diff --git a/cdist/conf/type/__install_chroot_umount/parameter b/cdist/conf/type/__install_chroot_umount/parameter
new file mode 120000
index 00000000..4148bcd0
--- /dev/null
+++ b/cdist/conf/type/__install_chroot_umount/parameter
@@ -0,0 +1 @@
+../__chroot_umount/parameter
\ No newline at end of file