我们正在尝试安装弹性搜索,但由于次要版本不匹配,ansible 任务失败。
我们使用的变量是:
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"]}
有没有一种方法可以指定是否存在次要版本不匹配不会使任务失败。
谢谢
您指定的重试条件的逻辑存在问题。如果您在没有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
输出:
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
条件,而不是从百胜任务本身。将failed_when
来自于failed_when
,你可以看到它视为无故障。
希望能帮助到你
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句