Ansible 在安装/升级之前检查远程主机上软件版本

35次阅读
没有评论

问题描述

想要在安装/升级之前检查远程主机上自定义软件(非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,'>=')

请注意,以上方案中的代码片段是根据提供的问答数据编写的,可能需要根据实际情况进行调整。

正文完