ansible-检查*本地*计算机上是否存在文件

ansible-检查*本地*计算机上是否存在文件,ansible,ansible-playbook,Ansible,Ansible Playbook,我需要检查本地计算机上文件的状态(我将调用ansible playbook…) 如果用户创建的文件存在,则需要将其复制到远程主机。如果它不存在,那么所有远程主机都不需要它 我知道我做过这样的事情: - name: Check for ~/.blah/config stat: path=/home/ubuntu/.blah/config register: stat_blah_config - name: Do something with blah config shell: ~/

我需要检查本地计算机上文件的状态(我将调用
ansible playbook…

如果用户创建的文件存在,则需要将其复制到远程主机。如果它不存在,那么所有远程主机都不需要它

我知道我做过这样的事情:

- name: Check for ~/.blah/config
  stat: path=/home/ubuntu/.blah/config
  register: stat_blah_config

- name: Do something with blah config
  shell: ~/do_something_with_config.sh
  when: stat_aws_config.stat.exists == true

但只有当文件远程存在时,这才有效。只有当文件在本地存在时(让第一个任务中的
stat
在本地而不是远程执行),有没有一种方法可以有条件地执行任务(如复制),如果没有,则以静默方式失败?我不确定ansible是否具有这种功能,但它会很有用。

通过语句将任务委托给本地主机应该可以实现您想要的功能:

- name: Check for ~/.blah/config
  local_action: stat path=/home/ubuntu/.blah/config
  register: stat_blah_config

实际上,我可能已经在这里找到了答案,使用
local\u action
:这是否回答了您的问题?要使用
本地操作
,是否需要设置任何特殊权限设置?我一直收到“权限被拒绝”的错误:
TASK:[blah|u stuff|Check for ~/.blah/config]************************************************************失败:[I-34b724e0->127.0.0.1]=>{“失败”:true,“已解析”:false}成功TQBKVKYWYTUCGNFRJBMOKWELPWDZEVZ/bin/sh:1:/tmp/.ansible/tmp/ansible-tmp-1444157688.04-230781782204943/stat:Permission denied
我尝试过使用
sudo:true
但这似乎没有帮助如果
sudo:true
失败,那么请确保运行ansible as的用户能够在没有密码的情况下进行sudo操作密码。Ansible不会提示您输入密码,因此如果它无法执行该任务,那么它将失败。