问题描述
想要在安装/升级之前检查远程主机上自定义软件(非rpm包)的版本是否大于或等于升级所需的软件版本。用户已经有了一个可以工作的playbook,但有一些问题需要解决:
1. 如何消除运行时的[DEPRECATION WARNING]警告?
2. 是否有更好的方法来应用相同的逻辑?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
要消除运行时的[DEPRECATION WARNING]警告,只需按照错误消息中的提示进行操作即可。将when
语句修改为:
when: CURRENT_INSTALLED_VERSION.stdout is version(EXPECTED_REMOTE_SOFTWARE_VERSION,'>=')
方案2
关于应用相同逻辑的更好方法,如果当前满足您的需求,我认为没有什么问题。但是需要注意的是,第一个任务不是幂等的。它每次运行时都会报告更改(因为默认情况下,shell命令会改变远程系统)。由于您的命令只是一个简单的grep,不会改变任何内容,您可以通过添加以下选项使任务始终报告ok:
changed_when: false
方案3
请注意,以下方案是用户评论中提到的,但需要注意版本差异。
根据用户评论,Ansible 2.5将version_compare
重命名为version
。因此,如果您使用的是Ansible 2.5或更高版本,可以使用version
过滤器而不是version_compare
。以下是修改后的代码:
when: CURRENT_INSTALLED_VERSION.stdout | version(EXPECTED_REMOTE_SOFTWARE_VERSION,'>=')
请注意,以上方案中的代码片段是根据提供的问答数据编写的,可能需要根据实际情况进行调整。
正文完