diff --git a/tcp_tests/helpers/env_config.py b/tcp_tests/helpers/env_config.py
index 48749c9..0331ac9 100644
--- a/tcp_tests/helpers/env_config.py
+++ b/tcp_tests/helpers/env_config.py
@@ -304,7 +304,7 @@
                 )
             )
 
-    def load_template(self, filename):
+    def load_template(self, filename, options=None):
         """Method for reading file with devops config
 
         :param filename: string
@@ -317,13 +317,13 @@
             )
 
             #self.config = templates.yaml_template_load(filename)
-            self.config = yaml_template_load(filename)
+            self.config = yaml_template_load(filename, options)
         else:
             LOG.error("Template filename is not set, loading config " +
                       "from template aborted.")
 
 
-def yaml_template_load(config_file):
+def yaml_template_load(config_file, options=None):
     """Temporary moved from fuel_devops to use jinja2"""
     dirname = os.path.dirname(config_file)
 
@@ -336,7 +336,7 @@
             raise error.DevopsError(
                 "Cannot load the environment template {0} : include file {1} "
                 "doesn't exist.".format(dirname, file_name))
-        inputfile = utils.render_template(file_name)
+        inputfile = utils.render_template(file_name, options)
         return yaml.load(inputfile, TemplateLoader)
 
     def yaml_get_env_variable(loader, node):
@@ -377,5 +377,5 @@
     TemplateLoader.add_constructor(
         yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping)
 
-    f = utils.render_template(config_file)
+    f = utils.render_template(config_file, options)
     return yaml.load(f, TemplateLoader)
diff --git a/tcp_tests/helpers/utils.py b/tcp_tests/helpers/utils.py
index 001cf3e..b300168 100644
--- a/tcp_tests/helpers/utils.py
+++ b/tcp_tests/helpers/utils.py
@@ -15,6 +15,7 @@
 import copy
 import os
 import shutil
+import StringIO
 import tempfile
 import time
 import traceback
@@ -148,13 +149,28 @@
 
 
 def generate_keys():
+    file_obj = StringIO.StringIO()
     key = paramiko.RSAKey.generate(1024)
+    key.write_private_key(file_obj)
     public = key.get_base64()
-    dirpath = tempfile.mkdtemp()
-    key.write_private_key_file(os.path.join(dirpath, 'id_rsa'))
-    with open(os.path.join(dirpath, 'id_rsa.pub'), 'w') as pub_file:
-        pub_file.write(public)
-    return dirpath
+    private = file_obj.getvalue()
+    file_obj.close()
+    return {'private': private,
+            'public': public}
+
+
+def load_keyfile(file_path):
+    with open(file_path, 'r') as private_key_file:
+        private = private_key_file.read()
+    key = paramiko.RSAKey(file_obj=StringIO.StringIO(private))
+    public = key.get_base64()
+    return {'private': private,
+            'public': public}
+
+
+def dump_keyfile(file_path, key):
+    key = paramiko.RSAKey(file_obj=StringIO.StringIO(key['private']))
+    key.write_private_key_file(file_path)
 
 
 def clean_dir(dirpath):
