diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index d02d7db..4a58e93 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -12,6 +12,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import netaddr
+
 from collections import defaultdict
 
 from datetime import datetime
@@ -155,3 +157,38 @@
     def get_pillar(self, tgt, pillar):
         result = self.local(tgt=tgt, fun='pillar.get', args=pillar)
         return result['return']
+
+    def get_ssh_data(self):
+        """Generate ssh config for Underlay
+
+        :param roles: list of strings
+        """
+
+        pool_name = self.__config.underlay.net_mgmt
+        pool_net = netaddr.IPNetwork(self.__config.underlay.address_pools[
+            self.__config.underlay.net_mgmt])
+        hosts = self.local('*', 'grains.item', ['host', 'ipv4'])
+
+        if len(hosts.get('return', [])) == 0:
+            raise LookupError("Hosts is empty or absent")
+        hosts = hosts['return'][0]
+        if len(hosts) == 0:
+            raise LookupError("Hosts is empty or absent")
+
+        def host(node_name, ip):
+            return {
+                'roles': ['salt_minion'],
+                'keys': [
+                    k['private'] for k in self.__config.underlay.ssh_keys
+                ],
+                'node_name': node_name,
+                'host': ip,
+                'address_pool': pool_name,
+                'login': settings.SSH_NODE_CREDENTIALS['login'],
+                'password': settings.SSH_NODE_CREDENTIALS['password']
+            }
+
+        return [
+            host(k, next(i for i in v['ipv4'] if i in pool_net))
+            for k, v in hosts.items()
+            if next(i for i in v['ipv4'] if i in pool_net)]
