我正在使用ansible编写测试用例。总共有9台服务器,我需要检查已安装的java版本是否为1.7.0?
如果小于1.7.0,则测试用例应该失败。
任何人都可以帮我写这个测试用例,因为我对ansible很新。
提前致谢
答案 0 :(得分:25)
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,{{3 },inspec。
答案 1 :(得分:2)
在你的问题中,你没有说明你尝试了什么,但仍然
你可以运行这样的命令
ansible your_host -m command -a 'java -version'
如果你需要解析java -version
的输出,那么格伦杰克曼有一个非常好的脚本here可以根据你的需要调整它并使用它。
如果您仍在寻求帮助,请更具体并展示您的尝试。
答案 2 :(得分:2)
自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