仅当ansible中的联机文件已更改时,如何运行命令

仅当ansible中的联机文件已更改时,如何运行命令,ansible,Ansible,我的ansible剧本中有以下任务: - name: download last buildtools get_url: url: https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar dest: ~/buildtools/BuildTools.jar 我希望仅当BuildTools.jar文件已更改时才运行以下命令: java -

我的ansible剧本中有以下任务:

- name: download last buildtools
  get_url:
    url: https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
    dest: ~/buildtools/BuildTools.jar
我希望仅当BuildTools.jar文件已更改时才运行以下命令:

java -jar BuildTools.jar --rev latest
我如何在我的ansible剧本中做到这一点


编辑:只是为了澄清一下,我希望只有在上面url处的文件版本发生更改时才触发该命令。因此,在这种情况下,每次构建工具支持新版本的minecraft。

最后,我找到了一种优雅的方式来完成我想要的任务:

从get_url模块中force参数的

如果是且dest不是目录,则每次都会下载该文件,如果内容发生更改,则会替换该文件

因此,我的配置现在是:

- name: Download the last buildtools
  get_url:
    url: https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
    dest: ~/buildtools/BuildTools.jar
    force: yes
  register: buildtools

- name: Update BuildTools
  command: java -jar BuildTools.jar --rev latest
  args:
    chdir: ~/buildtools/
  when: buildtools.changed
因此,只有在url下载的文件与服务器上的原始文件不同,或者是第一次下载该文件时,才会运行Update BuildTools任务

可能重复的