Specify which key to use to access the cloud

Extend cloud management configuration with private_key_file.

Change-Id: I3f690848fe5b35e245efc454bf4b1f51b61a5e8a
This commit is contained in:
Ilya Shakhat 2016-09-08 20:19:55 +03:00 committed by Ilya Shakhat
parent f72f5efabc
commit 3d4ad90a2c
4 changed files with 19 additions and 9 deletions

View File

@ -22,6 +22,7 @@ def main():
'driver': 'fuel',
'address': 'fuel.local',
'username': 'root',
'private_key_file': '~/.ssh/os_faults',
},
'power_management': {
'driver': 'libvirt',

View File

@ -96,15 +96,22 @@ Options = namedtuple('Options',
class AnsibleRunner(object):
def __init__(self, remote_user='root', password=None, forks=100,
ssh_common_args='', become=None):
jump_host=None, private_key_file=None, become=None):
super(AnsibleRunner, self).__init__()
module_path = resolve_relative_path('os_faults/ansible/modules')
ssh_common_args = ' '.join([ssh_common_args, SSH_COMMON_ARGS])
ssh_common_args = SSH_COMMON_ARGS
if jump_host:
ssh_common_args += (
' -o ProxyCommand="ssh -i %(key)s -W %%h:%%p '
'%(user)s@%(host)s"'
% dict(key=private_key_file, user=remote_user, host=jump_host))
self.options = Options(
connection='smart', password=password, module_path=module_path,
forks=forks, remote_user=remote_user, private_key_file=None,
forks=forks, remote_user=remote_user,
private_key_file=private_key_file,
ssh_common_args=ssh_common_args, ssh_extra_args=None,
sftp_extra_args=None, scp_extra_args=None,
become=become, become_method='sudo', become_user='root',

View File

@ -103,9 +103,11 @@ class DevStackManagement(cloud_management.CloudManagement):
self.address = cloud_management_params['address']
self.username = cloud_management_params['username']
self.private_key_file = cloud_management_params.get('private_key')
self.executor = executor.AnsibleRunner(remote_user=self.username,
become=True)
self.executor = executor.AnsibleRunner(
remote_user=self.username, private_key_file=self.private_key_file,
become=True)
self.host = None
def verify(self):

View File

@ -269,14 +269,14 @@ class FuelManagement(cloud_management.CloudManagement):
self.master_node_address = cloud_management_params['address']
self.username = cloud_management_params['username']
self.private_key_file = cloud_management_params.get('private_key_file')
self.master_node_executor = executor.AnsibleRunner(
remote_user=self.username)
remote_user=self.username, private_key_file=self.private_key_file)
self.cloud_executor = executor.AnsibleRunner(
remote_user=self.username,
ssh_common_args='-o ProxyCommand="ssh -W %%h:%%p %s@%s"' %
(self.username, self.master_node_address))
remote_user=self.username, private_key_file=self.private_key_file,
jump_host=self.master_node_address)
self.cached_cloud_hosts = None
self.fqdn_to_hosts = dict()