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

时间:2015-05-22 04:24:51

标签: unix ansible ansible-playbook

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

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

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

提前致谢

3 个答案:

答案 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的主要用例是验证服务器状态,则可能需要查看使用基础结构测试工具:serverspecgoss,{{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