ANSIMI упругая поиск ошибка установки версии несовпадение - PullRequest
0 голосов
/ 13 июня 2018

Мы пытаемся установить упругий поиск, а заданные задачи не выполняются, поскольку для несоответствия младшей версии.

Используемые нами переменные:

es_major_version: "5.x"
es_version: "5.5.1"

Вот определение задачиу нас есть

name: RedHat - Install Elasticsearch
  yum: name=elasticsearch{% if es_version is defined and es_version != ""  %}-{{ es_version }}{% endif %} state=present update_cache=yes
  when: es_use_repository
  register: redhat_elasticsearch_install_from_repo
  notify: restart elasticsearch
  until: '"failed" not in redhat_elasticsearch_install_from_repo'
  retries: 5
  delay: 10

И ошибка, которую мы получаем:

TASK [elastic.elasticsearch : RedHat - Install Elasticsearch] **********************************************************************************************************************************************
FAILED - RETRYING: RedHat - Install Elasticsearch (5 retries left).
FAILED - RETRYING: RedHat - Install Elasticsearch (4 retries left).
FAILED - RETRYING: RedHat - Install Elasticsearch (3 retries left).
FAILED - RETRYING: RedHat - Install Elasticsearch (2 retries left).
FAILED - RETRYING: RedHat - Install Elasticsearch (1 retries left).
fatal: [ip-10-0-11-xxx]: FAILED! => {"attempts": 5, "changed": false, "msg": "", "rc": 0, "results": ["elasticsearch-5.5.1-1.noarch providing elasticsearch-5.5.1-1 is already installed"]}

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

Спасибо

1 Ответ

0 голосов
/ 13 июня 2018

Существует некоторая проблема с логикой условия повторения, которое вы указали.если вы запустите задачу без предложения until, вы увидите, что атрибут failed в любом случае существует в переменной redhat_elasticsearch_install_from_repo.Я считаю, что вы должны улучшить его, написав его по-другому, но выглядит сложно / трудоемко, я должен признать,

, но если ваш код уже достаточно хорош, и вы хотите исправить только:

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

Вы можете добавить эту failed_when инструкцию:

failed_when: redhat_elasticsearch_install_from_repo.rc != 0

потому что вы можете видеть, что rc равен 0. В данном случае

, вот задача и ее вывод:

  - name: yum install
    yum: name=screen state=present update_cache=yes
    register: redhat_elasticsearch_install_from_repo
    until: '"failed" not in redhat_elasticsearch_install_from_repo'
    failed_when: redhat_elasticsearch_install_from_repo.rc != 0
    retries: 1
    delay: 5


  - name: output
    debug: 
      var: redhat_elasticsearch_install_from_repo

output:

TASK [yum install] *****************************************************************************************************************************************************************************************************
FAILED - RETRYING: yum install (1 retries left).
ok: [rhel-green]

TASK [output] **********************************************************************************************************************************************************************************************************
ok: [rhel-green] => {
    "redhat_elasticsearch_install_from_repo": {
        "attempts": 1, 
        "changed": false, 
        "failed": true, 
        "failed_when_result": false, 
        "msg": "", 
        "rc": 0, 
        "results": [
            "screen-4.1.0-0.25.20120314git3c2946.el7.x86_64 providing screen is already installed"
        ]
    }
}

PLAY RECAP *************************************************************************************************************************************************************************************************************
rhel-green                 : ok=2    changed=0    unreachable=0    failed=0

failed в вышеприведенном выводе происходит из условия until, а не из самой задачи yum.failed_when взято из failed_when, и вы можете видеть, что оно считается несостоявшимся.

надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...