仅当ansible中的联机文件已更改时,如何运行命令
我的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 -
- 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任务 可能重复的