ansible - 检查* local * machine

时间:2015-10-05 20:33:27

标签: 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: ~/do_something_with_config.sh
  when: stat_aws_config.stat.exists == true

但是只有文件远程存在才能生效。有没有办法有条件地执行任务(如副本)只有当文件存在本地(第一个任务中的stat在本地执行而不是远程执行时),如果存在则无声地失败才不是?我不确定ansible是否具有这种功能,但它会很有用。

1 个答案:

答案 0 :(得分:25)

通过local_action语句将任务委派给localhost应该可以做到你想要的:

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