我正在使用ansible编写一个测试用例。总共有9台服务器,我需要检查其中安装的java版本是否是1.7.0?
如果小于 1.7.0,则测试用例应该失败。
任何人都可以帮我写这个测试用例,因为我对 ansible 很陌生。
提前致谢
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', '>=')
顺便说一句,如果 Ansible 的主要用例是验证服务器状态,您可能需要考虑使用基础设施测试工具:serverspec、goss、inspec、testinfra。
虽然在你的问题中你没有具体说明你尝试过什么,但仍然
您可以运行这样的命令
ansible your_host -m command -a 'java -version'
如果您需要解析
java -version
的输出,Glenn Jackman here 有一个非常好的脚本,请根据您的需求进行调整并使用它。
如果您仍在寻求帮助,请更具体并说明您尝试做什么。
从 2.0 开始你就可以做到这一点
- name: Check if java is installed
command: java -version
become_user: '{{ global_vars.user_session }}' // your user session
register: java_result
ignore_errors: True
- debug:
msg: "Failed - Java is not installed"
when: java_result is failed
- debug:
msg: "Success - Java is installed"
when: java_result is success