issue #150: ansible: add basic Docker support.
This commit is contained in:
parent
b64e52b1fd
commit
4691ce0b95
|
@ -160,6 +160,18 @@ class Connection(ansible.plugins.connection.ConnectionBase):
|
|||
})
|
||||
)
|
||||
|
||||
def _connect_docker(self):
|
||||
return mitogen.service.call(
|
||||
self.parent,
|
||||
ContextService.handle,
|
||||
cast({
|
||||
'method': 'docker',
|
||||
'container': self._play_context.remote_addr,
|
||||
'python_path': self.python_path,
|
||||
'connect_timeout': self._play_context.timeout,
|
||||
})
|
||||
)
|
||||
|
||||
def _connect_sudo(self, via=None, python_path=None):
|
||||
"""
|
||||
Fetch a reference to a sudo Context matching the play context from
|
||||
|
@ -212,12 +224,17 @@ class Connection(ansible.plugins.connection.ConnectionBase):
|
|||
self.context = self._connect_sudo(python_path=sys.executable)
|
||||
else:
|
||||
self.context = self._connect_local()
|
||||
else:
|
||||
return
|
||||
|
||||
if self.original_transport == 'docker':
|
||||
self.host = self._connect_docker()
|
||||
elif self.original_transport == 'ssh':
|
||||
self.host = self._connect_ssh()
|
||||
if self._play_context.become:
|
||||
self.context = self._connect_sudo(via=self.host)
|
||||
else:
|
||||
self.context = self.host
|
||||
|
||||
if self._play_context.become:
|
||||
self.context = self._connect_sudo(via=self.host)
|
||||
else:
|
||||
self.context = self.host
|
||||
|
||||
def close(self):
|
||||
"""
|
||||
|
|
|
@ -78,7 +78,7 @@ def wrap_connection_loader__get(name, play_context, new_stdin):
|
|||
an argument, so that it can emulate the original type.
|
||||
"""
|
||||
kwargs = {}
|
||||
if name in ('ssh', 'local'):
|
||||
if name in ('ssh', 'local', 'docker'):
|
||||
kwargs['original_transport'] = name
|
||||
name = 'mitogen'
|
||||
return connection_loader__get(name, play_context, new_stdin, **kwargs)
|
||||
|
|
|
@ -258,6 +258,15 @@ Sudo Variables
|
|||
* ansible.cfg: timeout
|
||||
|
||||
|
||||
Docker Variables
|
||||
----------------
|
||||
|
||||
Note: Docker support is only intended for developer testing, it might disappear
|
||||
entirely prior to a stable release.
|
||||
|
||||
* ansible_host
|
||||
|
||||
|
||||
Chat on IRC
|
||||
-----------
|
||||
|
||||
|
|
|
@ -61,6 +61,4 @@ class Stream(mitogen.parent.Stream):
|
|||
elif self.image:
|
||||
bits += ['run', '-i', '--rm', self.image]
|
||||
bits += super(Stream, self).get_boot_command()
|
||||
LOG.debug('Docker command line: %r', bits)
|
||||
print bits
|
||||
return bits
|
||||
|
|
Loading…
Reference in New Issue