Ansible如何检查缓冲区中是否存在文件

Ansible如何检查缓冲区中是否存在文件,ansible,devops,ansible-2.x,ansible-facts,Ansible,Devops,Ansible 2.x,Ansible Facts,我有一个角色a,它将文件提取到缓冲区,如下所示。现在我有了另一个角色B,如果文件存在于缓冲区中,它必须将文件复制到DB服务器。如何检查主缓冲区中是否存在文件 角色A - name: fetch the log to buffer from app servers fetch: src=/tmplogs/script.log dest=buffer/ flat=yes # To ./playbooks/buffer 角色B - name: Copy log from buffer t

我有一个角色a,它将文件提取到缓冲区,如下所示。现在我有了另一个角色B,如果文件存在于缓冲区中,它必须将文件复制到DB服务器。如何检查主缓冲区中是否存在文件

角色A

  - name: fetch the log to buffer from app servers
    fetch: src=/tmplogs/script.log dest=buffer/ flat=yes # To ./playbooks/buffer
角色B

- name: Copy log from buffer to db server
  block:
  - name: Check if log exists in buffer
    stat:  path=buffer/.log
    register: script_buffer

  - name: Copy log from buffer to db servers
    copy: src=buffer/script.log  dest=/opt/script.log
    when: script_buffer.stat.exists

我不能在这里使用stat,因为它在远程主机上运行。如何实现这一点?

您的想法是正确的,但您需要在本地主机上而不是在远程主机上运行
stat
模块:

  - name: Check if log exists in buffer
    delegate_to: localhost
    stat:
      path: buffer/.log
    register: script_buffer

不确定您的具体要求是什么,但您是否考虑过将
委托给:localhost
在localhost上运行该特定任务(我相信您称之为此主机?)您可以将
忽略\u错误:是的
放在任务上吗?谢谢Jbone,localhost工作正常。不知道怎么会错过这个简单的