Существует некоторая проблема с логикой условия повторения, которое вы указали.если вы запустите задачу без предложения 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
, и вы можете видеть, что оно считается несостоявшимся.
надеюсь, что это поможет