【问题标题】:Ansible command to check the java version in different serversAnsible 命令检查不同服务器中的 java 版本
【发布时间】:2018-05-17 19:01:32
【问题描述】:

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

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

谁能帮我写这个测试用例,因为我是 ansible 的新手。

提前致谢

【问题讨论】:

    标签: unix ansible ansible-playbook


    【解决方案1】:

    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 主要用例是验证服务器状态,您可能希望改用基础设施测试工具:serverspecgossinspectestinfra .

    【讨论】:

    • @udondan shell命令可以简化为java -version 2>&1 | awk -F'"' 'NR==1{ print $2 }'
    【解决方案2】:

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

    你可以运行这样的命令

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

    如果您需要解析 java -version 的输出,Glenn Jackman here 提供了一个非常好的脚本,可以根据您的需要调整并使用它。

    如果您仍在寻求帮助,请更加具体并展示您尝试过的工作。

    【讨论】:

      【解决方案3】:

      从 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
      

      【讨论】:

        猜你喜欢
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 2012-11-23
        相关资源
        最近更新 更多