我的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。
答案 0 :(得分:0)
最后,我找到了一种优雅的方式来做我想要的事情:
来自get_url模块中force参数的doc,
如果是,并且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任务。