Ansible命令检查不同服务器中的java版本

suh*_*has 7 unix ansible ansible-playbook

我正在使用ansible编写一个测试用例.总共有9台服务器,我需要检查安装的java版本是否为1.7.0?

如果它小于1.7.0,则测试用例应该失败.

任何人都可以帮我写这个测试用例,因为我对ansible很新.

提前致谢

udo*_*dan 25

Ansible 自1.6以来就有一个version_compare过滤器.但是由于Ansible不了解您的Java版本,您首先需要在单独的任务中获取它并注册输出,因此您可以对其进行比较.

- name: Fetch Java version
  shell: java -version 2>&1 | grep version | awk '{print $3}' | sed 's/"//g'
  register: java_version

- assert:
    that: 
      - java_version.stdout | version_compare('1.7', '>=') 
Run Code Online (Sandbox Code Playgroud)

在阿里纳斯,如果你主要用例Ansible是验证你可能想看看使用基础设施的测试工具,而不是服务器状态:serverspec,高斯,INSPEC,testinfra.


dei*_*mus 3

尽管在你的问题中你没有具体说明你尝试过什么,但仍然

你可以运行这样的命令

ansible your_host -m command -a 'java -version'

如果您需要解析输出,java -versionGlenn Jackman 提供了一个非常好的脚本,根据您的需求进行调整并使用它。

如果您仍在寻求帮助,请更具体地说明您尝试做什么。