ansible 弹性搜索安装版本不匹配失败

萨蒂什·科米尼尼

我们正在尝试安装弹性搜索,但由于次要版本不匹配,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"]}

有没有一种方法可以指定是否存在次要版本不匹配不会使任务失败。

谢谢

ilias-sp

您指定的重试条件的逻辑存在问题。如果您在没有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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ansible 文件来部署特定版本的弹性搜索

来自分类Dev

Ansible中的回溯错误(Python版本不匹配?)

来自分类Dev

Ruby版本与安装版本不同

来自分类Dev

在需求中指定版本时,ansible-galaxy安装失败

来自分类Dev

如何安装ansible的特定版本?

来自分类Dev

Ansible版本比较

来自分类Dev

Ansible Yaml语法失败

来自分类Dev

Ansible复制模块失败

来自分类Dev

Ansible Yaml语法失败

来自分类Dev

Ansible条件匹配

来自分类Dev

使用Ansible安装Rbenv

来自分类Dev

通过Ansible安装phpunit

来自分类Dev

ansible yum安装命令

来自分类Dev

使用Ansible安装特定的apt版本

来自分类Dev

如何使用 Ansible 检查安装的版本

来自分类Dev

Ansible安装在RHEL 7上失败

来自分类Dev

用于从安装库中搜索安装版本与任何版本都不匹配的软件包的工具吗?

来自分类Dev

Ansible:如何更改Python版本

来自分类Dev

nginx 的 vagrant/ansible 错误版本

来自分类Dev

在 Ansible 中设置包版本

来自分类Dev

Ansible:对任务失败执行清理

来自分类Dev

失败时呼叫Ansible任务

来自分类Dev

Ansible:没有匹配的主机

来自分类Dev

Ansible 限制与模式不匹配

来自分类Dev

Ansible:通过HTTP安装tarball

来自分类Dev

如何使用Ansible安装MongoDB?

来自分类Dev

使用Ansible安装Bundler gem

来自分类Dev

Ansible安装Python Mysql Connector

来自分类Dev

使用Ansible安装Bundler gem