diff --git a/elements/sysctl/README.rst b/elements/sysctl/README.rst
new file mode 100644
index 000000000..d6e37d1b1
--- /dev/null
+++ b/elements/sysctl/README.rst
@@ -0,0 +1,12 @@
+======
+sysctl
+======
+
+Add a sysctl-set-value command which can be run from within an element.
+Running this command will cause the sysctl value to be set on boot (by
+writing the value to /etc/sysctl.d).
+
+Example usage
+
+::
+    sysctl-set-value net.ipv4.ip_forward 1
diff --git a/elements/sysctl/bin/sysctl-set-value b/elements/sysctl/bin/sysctl-set-value
new file mode 100755
index 000000000..cbeb6eff9
--- /dev/null
+++ b/elements/sysctl/bin/sysctl-set-value
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# Copied from tripleo-image-element's sysctl element
+#
+# Validate and manage setting sysctl settings.
+#
+# The script is called with name/value pairs which are stored
+# in the system default sysctl.d directory. Before adding new
+# settings a validation is done to ensure that conflicting
+# sysctl settings have not been requested. Once finished sysctl
+# is used to activate the changes.
+
+if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
+    set -x
+fi
+set -eu
+set -o pipefail
+
+NAME=${1:-}
+VALUE=${2:-}
+# Optional comment used to describe the setting
+COMMENT=${3:-"This file was created by diskimage-builder."}
+
+if [ -z "$NAME" -o -z "$VALUE" ]; then
+    echo "NAME and VALUE are required."
+    exit 1
+fi
+
+FILENAME="/etc/sysctl.d/${NAME}.conf"
+
+if [ -f $FILENAME ]; then
+    # check to make sure the settings match... otherwise fail
+    if ! grep -q "^$NAME = $VALUE" $FILENAME; then
+        echo "Conflicting sysctl.conf setting for $NAME == $VALUE. Found:"
+        grep "^$NAME" $FILENAME
+        exit 1
+    fi
+else
+
+    if ! sysctl -a | grep -q "^$NAME"; then
+        echo "Invalid sysctl key: $NAME"
+        exit 1
+    fi
+
+    sysctl-write-value $NAME "$VALUE" "$COMMENT"
+
+    sysctl -p $FILENAME
+
+fi
diff --git a/elements/sysctl/bin/sysctl-write-value b/elements/sysctl/bin/sysctl-write-value
new file mode 100755
index 000000000..e60f55352
--- /dev/null
+++ b/elements/sysctl/bin/sysctl-write-value
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Copied from tripleo-image-element's sysctl element
+#
+# Validate and manage setting sysctl settings.
+#
+# The script is called with name/value pairs which are stored
+# in the system default sysctl.d directory. This script performs
+# no checking, just writing out the file.
+
+if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
+    set -x
+fi
+set -eu
+set -o pipefail
+
+NAME=${1:-}
+VALUE=${2:-}
+# Optional comment used to describe the setting
+COMMENT=${3:-"This file was created by diskimage-builder."}
+
+if [ -z "$NAME" -o -z "$VALUE" ]; then
+    echo "Usage: sysctl-write-value <name> <value> [comment]"
+    exit 1
+fi
+
+FILENAME="/etc/sysctl.d/${NAME}.conf"
+
+cat > $FILENAME <<EOF_CAT
+# $COMMENT
+$NAME = $VALUE
+EOF_CAT