ansible-runner icon indicating copy to clipboard operation
ansible-runner copied to clipboard

FileExistsError on rc.prepare()

Open jfmrm opened this issue 5 years ago • 6 comments
trafficstars

when ansible_runner.run() is called it initiates a Runner instance, and on the prepare() method it creates a couple of files on the private dir, the thing is: when the ssh private key fille already exists it raises an uncaught exception

  File "/home/joao.moura/workspace/concierge/inloco_tower/test/test_installer.py", line 20, in test_installer
    result = self.installer.run(target_instance="localhost", user="root")
  File "/home/joao.moura/workspace/concierge/inloco_tower/app/installer.py", line 19, in run
    runner = ansible_runner.run(
  File "/home/joao.moura/workspace/concierge/inloco_tower/venv/lib/python3.8/site-packages/ansible_runner/interface.py", line 177, in run
    r = init_runner(**kwargs)
  File "/home/joao.moura/workspace/concierge/inloco_tower/venv/lib/python3.8/site-packages/ansible_runner/interface.py", line 65, in init_runner
    rc.prepare()
  File "/home/joao.moura/workspace/concierge/inloco_tower/venv/lib/python3.8/site-packages/ansible_runner/runner_config.py", line 186, in prepare
    open_fifo_write(self.ssh_key_path, self.ssh_key_data)
  File "/home/joao.moura/workspace/concierge/inloco_tower/venv/lib/python3.8/site-packages/ansible_runner/utils.py", line 362, in open_fifo_write
    os.mkfifo(path, stat.S_IRUSR | stat.S_IWUSR)
FileExistsError: [Errno 17] File exists

Testing locally I simply added:

try:
  os.mkfifo(path, stat.S_IRUSR | stat.S_IWUSR)
except:
  pass

and solved the issue.

jfmrm avatar Jan 27 '20 17:01 jfmrm

If you can make a PR for that we can get it merged in and close this out. Add an info or debug logger statement to note the skip.

matburt avatar Jan 31 '20 17:01 matburt

sure, gonna do it!

jfmrm avatar Jan 31 '20 20:01 jfmrm

Circling back to this, the only way I could see hitting this situation is if you passed ssh key data into Runner as well as having the file on the filesystem. Is that what you were doing here?

matburt avatar Apr 07 '20 15:04 matburt

Yes, actually because on the first run of it the runner creates a file with the ssh key on the filesystem

jfmrm avatar Apr 14 '20 18:04 jfmrm

and I actually forgot about it, sorry for that. I'll make this week

jfmrm avatar Apr 14 '20 18:04 jfmrm

It may be possible to ignore the error in this particular case...

But I'm wondering if this is just one more consequence of https://github.com/ansible/ansible-runner/issues/493. I guess there's no way to avoid writing this file, so the same solution wouldn't be possible, so I guess it is a different issue.

AlanCoding avatar Sep 22 '20 02:09 AlanCoding