Ansible команда для проверки версии Java на разных серверах

Я пишу тестовый пример, используя ansible. Всего есть 9 серверов, на которых мне нужно проверить, является ли установленная версия Java 1.7.0 или нет?

Если он меньше 1.7.0, то тестовый пример должен завершиться ошибкой.

Может ли кто-нибудь помочь мне написать этот тестовый пример, так как я очень новичок в ansible.

заранее спасибо


person suhas    schedule 22.05.2015    source источник


Ответы (3)


Хотя в своем вопросе вы не указали, что вы пробовали, но все же

Вы можете запустить такие команды

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

Если вам нужно проанализировать вывод java -version, есть очень хороший скрипт от Гленна Джекмана здесь адаптируйте его под свои нужды и используйте.

Если вы все еще ищете помощи, будьте более конкретными и покажите, что вы пытались сделать.

person deimus    schedule 22.05.2015

Начиная с версии 1.6, Ansible имеет 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 — проверка состояния сервера, вы можете вместо этого взглянуть на использование инструмента тестирования инфраструктуры: спецификация сервера, goss, inspec, testinfra.

person udondan    schedule 22.05.2015
comment
@udondan команду оболочки можно упростить до java -version 2>&1 | awk -F'"' 'NR==1{ print $2 }' - person Ryan Fisher; 24.05.2018

Начиная с 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
person Punix81    schedule 17.05.2018