【发布时间】:2018-05-17 19:01:32
【问题描述】:
我正在使用ansible编写一个测试用例。我需要检查安装的java版本是否为1.7.0的总共9台服务器?
如果小于 1.7.0 则测试用例应该失败。
谁能帮我写这个测试用例,因为我是 ansible 的新手。
提前致谢
【问题讨论】:
标签: unix ansible ansible-playbook
我正在使用ansible编写一个测试用例。我需要检查安装的java版本是否为1.7.0的总共9台服务器?
如果小于 1.7.0 则测试用例应该失败。
谁能帮我写这个测试用例,因为我是 ansible 的新手。
提前致谢
【问题讨论】:
标签: unix ansible ansible-playbook
Ansible 从 1.6 开始就有 version_compare filter。但由于 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 .
【讨论】:
java -version 2>&1 | awk -F'"' 'NR==1{ print $2 }'
尽管在你的问题中你没有具体说明你尝试了什么,但仍然
你可以运行这样的命令
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
【讨论】: