diff --git a/ansible/test/bin/.env b/ansible/test/bin/.env
new file mode 100644
index 0000000..d81bce5
--- /dev/null
+++ b/ansible/test/bin/.env
@@ -0,0 +1,14 @@
+#
+# Define environment variables here that are visible for each Molecule run.
+# Format is shell format.
+#
+# Alternative, env variables can be also defined specificly for certain role
+# by creating .env.yml file (yml format) into role's directory from where also
+# Molecule is run. Variables in this role specific .env.yml file will override
+# variables in this file.
+#
+
+# Passwords needed (when using molecule-dev container) to access localhost by ssh
+#LOCALHOST_ANSIBLE_PASSWORD=
+#LOCALHOST_ANSIBLE_SUDO_PASS=
+
diff --git a/ansible/test/bin/molecule.sh b/ansible/test/bin/molecule.sh
new file mode 100755
index 0000000..d983ca0
--- /dev/null
+++ b/ansible/test/bin/molecule.sh
@@ -0,0 +1,54 @@
+#! /usr/bin/env bash
+
+#   COPYRIGHT NOTICE STARTS HERE
+
+#   Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+#   COPYRIGHT NOTICE ENDS HERE
+
+SCRIPT_DIR=$(dirname "${0}")
+LOCAL_PATH=$(readlink -f "$SCRIPT_DIR")
+# main root dir in this git repo (relative to this script location)
+ROOT_DIR=$(cd ${LOCAL_PATH}/../../../ && pwd)/
+PROJECT_ROOT_IN_CONTAINER=${PWD##${ROOT_DIR}}
+# Make dir structure same in container to make localhost ssh actions to match same dirs
+CONTAINER_ROOT=${ROOT_DIR}
+
+if [ "${PWD}" == "${PROJECT_ROOT_IN_CONTAINER}" ]; then
+    echo "Please run it under subdir of ${ROOT_DIR} directory"
+    exit 1
+fi
+
+env_params=(--env LOCALHOST_ANSIBLE_HOST=$(hostname -I | cut -f 1 -d ' '))
+env_params+=(--env LOCALHOST_ANSIBLE_USER=$(id -nu))
+
+if [ -e "${LOCAL_PATH}/.env" ]; then
+    env_file="--env-file ${LOCAL_PATH}/.env"
+fi
+
+MOLECULE_IMAGE=${MOLECULE_IMAGE:-molecule-dev}
+MOLECULE_IMAGE_VERSION=${MOLECULE_IMAGE_VERSION:-2.20.0}
+echo "Running molecule image: ${MOLECULE_IMAGE}:${MOLECULE_IMAGE_VERSION}"
+MOLECULE_CMD=${MOLECULE_CMD:-molecule}
+docker run --rm -it \
+    -v /var/run/docker.sock:/var/run/docker.sock \
+    -v ${ROOT_DIR}:${CONTAINER_ROOT}:rw \
+    -w ${CONTAINER_ROOT}/${PROJECT_ROOT_IN_CONTAINER} \
+    "${env_params[@]}" \
+    ${env_file} \
+    --name ${MOLECULE_IMAGE} \
+    ${MOLECULE_IMAGE}:${MOLECULE_IMAGE_VERSION} \
+    ${MOLECULE_CMD} "$@"
+
diff --git a/ansible/test/bin/set_molecule_paths.sh b/ansible/test/bin/set_molecule_paths.sh
new file mode 100755
index 0000000..e237eb1
--- /dev/null
+++ b/ansible/test/bin/set_molecule_paths.sh
@@ -0,0 +1,23 @@
+#! /usr/bin/env bash
+
+#   COPYRIGHT NOTICE STARTS HERE
+
+#   Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+#   COPYRIGHT NOTICE ENDS HERE
+SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
+LOCAL_PATH=$(readlink -f "$SCRIPT_DIR")
+
+export PATH=${LOCAL_PATH}:${PATH}
diff --git a/ansible/test/molecule-docker/Dockerfile b/ansible/test/molecule-docker/Dockerfile
new file mode 100644
index 0000000..e4207f2
--- /dev/null
+++ b/ansible/test/molecule-docker/Dockerfile
@@ -0,0 +1,20 @@
+FROM quay.io/ansible/molecule:2.20
+
+ARG USER_ID
+ARG GROUP_ID
+ARG DOCKER_GROUP_ID
+
+# When user/group provided, create user to have matching ids (for the host user)
+# to avoid this docker writing files as root owned
+RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
+    # shadow needed for addgroup
+    # sshpass needed for accessing docker_host (localhost) with ssh and without password prompt
+    apk --no-cache add shadow sshpass && \
+    addgroup -g ${GROUP_ID} molecule && \
+    adduser -D -u ${USER_ID} -G molecule molecule && \
+    # Add user to same docker group as in docker_host to be able to use docker driver as sudo
+    groupadd docker-host -g ${DOCKER_GROUP_ID} && \
+    usermod -aG ${DOCKER_GROUP_ID} molecule \
+;fi
+
+USER molecule
diff --git a/ansible/test/molecule-docker/build.sh b/ansible/test/molecule-docker/build.sh
new file mode 100755
index 0000000..0b65f2a
--- /dev/null
+++ b/ansible/test/molecule-docker/build.sh
@@ -0,0 +1,32 @@
+#! /usr/bin/env bash
+
+#   COPYRIGHT NOTICE STARTS HERE
+
+#   Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+#   COPYRIGHT NOTICE ENDS HERE
+
+SCRIPT_DIR=$(dirname "${0}")
+LOCAL_PATH=$(readlink -f "$SCRIPT_DIR")
+
+set -e
+
+docker build \
+    --build-arg USER_ID=$(id -u ${USER}) \
+    --build-arg GROUP_ID=$(id -g ${USER}) \
+    --build-arg DOCKER_GROUP_ID=$(getent group docker | cut -f 3 -d ':') \
+    -t molecule-dev:2.20.0 \
+    ${LOCAL_PATH}
+
