ansible: tilde-expand SSH key before passing to SSH; closes #334.

issue260
David Wilson 6 years ago
parent 9aa76cf9ce
commit 96f000c5ea

@ -92,6 +92,12 @@ def _connect_ssh(spec):
else:
check_host_keys = 'ignore'
# #334: tilde-expand private_key_file to avoid implementation difference
# between Python and OpenSSH.
private_key_file = spec['private_key_file']
if private_key_file is not None:
private_key_file = os.path.expanduser(private_key_file)
return {
'method': 'ssh',
'kwargs': {
@ -101,7 +107,7 @@ def _connect_ssh(spec):
'password': optional_secret(spec['password']),
'port': spec['port'],
'python_path': spec['python_path'],
'identity_file': spec['private_key_file'],
'identity_file': private_key_file,
'identities_only': False,
'ssh_path': spec['ssh_executable'],
'connect_timeout': spec['ansible_ssh_timeout'],

@ -1,2 +1,3 @@
- import_playbook: config.yml
- import_playbook: timeouts.yml
- import_playbook: variables.yml

@ -0,0 +1,19 @@
# issue #334: test expanduser() on key file during config generation.
- name: integration/ssh/config.yml
hosts: test-targets
connection: ssh
vars:
ansible_private_key_file: ~/fakekey
tasks:
- meta: end_play
when: not is_mitogen
- mitogen_get_stack:
register: out
- assert:
that: |
out.result[0].kwargs.identity_file == (
lookup('env', 'HOME') + '/fakekey'
)
Loading…
Cancel
Save