Wait for file over ssh

Viewed 74

I would like to do something like:

- name: Wait until the file is touched
  ansible.builtin.wait_for:
    path: 192.168.1.1:/home/test.txt
    timeout: 300

where 192.168.1.1 is some remote host I am connected to. Is this possible?

1 Answers

I don't believe it's possible with wait_for module.
My workaround is to use until:

  - name: Wait until file exists on remote.
    shell: ssh $USER@192.168.1.1 ls /home/test.txt
    register: filecheck
    until: filecheck.stdout == "/home/test.txt"
    retries: 10
    delay: 1

I copied the file to the host while the playbook was running through the 9th attempt:

changed: [localhost] => {
    "attempts": 9,
    "changed": true,
    "cmd": "ssh root@192.168.1.1 ls /home/test.txt",
    "delta": "0:00:01.548091",
    "end": "2022-08-11 15:31:05.276277",
    "invocation": {
        "module_args": {
            "_raw_params": "ssh root@192.168.1.1 ls /home/test.txt",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": false
        }
    },
    "msg": "",
    "rc": 0,
    "start": "2022-08-11 15:31:03.728186",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "/home/test.txt",
    "stdout_lines": [
        "/home/test.txt"
    ]
Related