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不会提示您输入密码,因此如果它无法执行该任务,那么它将失败。