diff --git a/ansible/action_plugins/merge_configs.py b/ansible/action_plugins/merge_configs.py
index b5df51fdc2..556f6233fa 100644
--- a/ansible/action_plugins/merge_configs.py
+++ b/ansible/action_plugins/merge_configs.py
@@ -16,6 +16,7 @@
 
 from ConfigParser import ConfigParser
 from cStringIO import StringIO
+import inspect
 import os
 
 from ansible.plugins.action import ActionBase
@@ -41,8 +42,16 @@ class ActionModule(ActionBase):
             task_vars = dict()
         result = super(ActionModule, self).run(tmp, task_vars)
 
-        if not tmp:
+        # NOTE(jeffrey4l): Ansible 2.1 add a remote_user param to the
+        # _make_tmp_path function.  inspect the number of the args here. In
+        # this way, ansible 2.0 and ansible 2.1 are both supported
+        make_tmp_path_args = inspect.getargspec(self._make_tmp_path)[0]
+        if not tmp and len(make_tmp_path_args) == 1:
             tmp = self._make_tmp_path()
+        if not tmp and len(make_tmp_path_args) == 2:
+            remote_user = (task_vars.get('ansible_ssh_user')
+                           or self._play_context.remote_user)
+            tmp = self._make_tmp_path(remote_user)
 
         sources = self._task.args.get('sources', None)
         extra_vars = self._task.args.get('vars', list())
diff --git a/ansible/library/kolla_docker.py b/ansible/library/kolla_docker.py
index e8e39490d1..4930ad4908 100644
--- a/ansible/library/kolla_docker.py
+++ b/ansible/library/kolla_docker.py
@@ -681,17 +681,12 @@ def generate_module():
     required_together = [
         ['tls_cert', 'tls_key']
     ]
-    return AnsibleModule(
+    module = AnsibleModule(
         argument_spec=argument_spec,
         required_together=required_together,
         bypass_checks=True
     )
 
-
-def generate_nested_module():
-    module = generate_module()
-
-    # We unnest the common dict and the update it with the other options
     new_args = module.params.pop('common_options', dict())
 
     # NOTE(jeffrey4l): merge the environment
@@ -704,16 +699,12 @@ def generate_nested_module():
             continue
         new_args[key] = value
 
-    # Override ARGS to ensure new args are used
-    global MODULE_COMPLEX_ARGS
-    MODULE_COMPLEX_ARGS = json.dumps(new_args)
-
-    # Reprocess the args now that the common dict has been unnested
-    return generate_module()
+    module.params = new_args
+    return module
 
 
 def main():
-    module = generate_nested_module()
+    module = generate_module()
 
     # TODO(SamYaple): Replace with required_if when Ansible 2.0 lands
     if (module.params.get('action') in ['pull_image', 'start_container']