Commit 89c01303 by Michael DeHaan

Merge branch 'integration' of https://github.com/cocoy/ansible into cocoy-integration

parents bced4c9d c844a2d0
...@@ -37,6 +37,8 @@ with warnings.catch_warnings(): ...@@ -37,6 +37,8 @@ with warnings.catch_warnings():
################################################ ################################################
class Connection(object): class Connection(object):
''' Handles abstract connections to remote hosts ''' ''' Handles abstract connections to remote hosts '''
...@@ -74,16 +76,42 @@ class ParamikoConnection(object): ...@@ -74,16 +76,42 @@ class ParamikoConnection(object):
self.port = self.runner.remote_port self.port = self.runner.remote_port
def _get_conn(self): def _get_conn(self):
credentials = {}
user = self.runner.remote_user
keypair = None
# Read file ~/.ssh/config, get data hostname, keyfile, port, etc
# This overrides the ansible defined username,hostname and port
try:
ssh_config = paramiko.SSHConfig()
config_file = ('~/.ssh/config')
if os.path.exists(os.path.expanduser(config_file)):
ssh_config.parse(open(os.path.expanduser(config_file)))
credentials = ssh_config.lookup(self.host)
except IOError,e:
raise errors.AnsibleConnectionFailed(str(e))
if 'hostname' in credentials:
self.host = credentials['hostname']
if 'port' in credentials:
self.port = credentials['port']
if 'user' in credentials:
user = credentials['user']
if 'identityfile' in credentials:
keypair = credentials['identityfile']
ssh = paramiko.SSHClient() ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try: try:
ssh.connect( ssh.connect(
self.host, self.host,
username=self.runner.remote_user, username=user,
allow_agent=True, allow_agent=True,
look_for_keys=True, look_for_keys=True,
password=self.runner.remote_pass, password=self.runner.remote_pass,
key_filename=keypair,
timeout=self.runner.timeout, timeout=self.runner.timeout,
port=self.port port=self.port
) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment