From 642b183fb6b0632167130774c2ebfc44d88ac278 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Mon, 4 Aug 2014 10:50:14 -0400 Subject: [PATCH] Use atomic move function on known host file in paramiko to prevent rare occurance of Control-C during file operations. --- lib/ansible/runner/connection_plugins/paramiko_ssh.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ansible/runner/connection_plugins/paramiko_ssh.py b/lib/ansible/runner/connection_plugins/paramiko_ssh.py index e71d0824b6e..810dff5c4e0 100644 --- a/lib/ansible/runner/connection_plugins/paramiko_ssh.py +++ b/lib/ansible/runner/connection_plugins/paramiko_ssh.py @@ -381,7 +381,13 @@ class Connection(object): self.ssh.load_system_host_keys() self.ssh._host_keys.update(self.ssh._system_host_keys) - self._save_ssh_host_keys(self.keyfile) + + # save the new keys to a temporary file and move it into place + # rather than rewriting the file + tmp_keyfile = tempfile.NamedTemporaryFile() + self._save_ssh_host_keys(tmp_keyfile) + atomic_move(tmp_keyfile.name, self.keyfile) + tmp_keyfile.close() except: