Ansible 预期不会将响应传递给 kibana 密钥库

Ansible 预期不会将响应传递给 kibana 密钥库

Ansible expect 不会在第一次传递时传递 ansible 变量。如果我进行更改并重新运行脚本并添加额外的响应问题,那么脚本似乎可以工作,但如果我只是想在第一次运行场景中设置它,它就不会按预期工作。

首次运行场景,它在密钥库中创建设置但从未完成,设置 elasticsearch.username 是在密钥库中创建的,但我无法验证名称是否实际添加,但任务失败并出现以下错误,我尝试了几种不同的方法来解决这个问题,但似乎没有任何效果。

在开始此过程之前,我还确保密钥库是空的,并且密钥库中没有值

- name: Create kibana elasticsearch user
  expect:
    command: sudo -E /usr/share/kibana/bin/kibana-keystore add elasticsearch.username
    responses:
      'username': "{{ elasticsearch_username }}

错误

fatal: [10.14.12.113]: FAILED! => {"changed": true, "cmd": "sudo -E /usr/share/kibana/bin/kibana-keystore add elasticsearch.username", "delta": "0:00:30.610819", "end": "2019-03-19 20:32:45.320395", "msg": "command exceeded timeout", "rc": null, "start": "2019-03-19 20:32:14.709576", "stdout": "\u001b[1G\u001b[0JEnter value for elasticsearch.username: \u001b[41Gkibana\r\r\n\u001b[41G", "stdout_lines": ["\u001b[1G\u001b[0JEnter value for elasticsearch.username: \u001b[41Gkibana", "", "\u001b[41G"]}

如果我第二次运行它,添加响应问题以在添加密钥库后覆盖该值,那么这似乎没有任何问题,因此似乎没有意义为什么它在第一轮失败而只是第一次添加值。

手动 CLI 运行没有任何问题。

- name: Create kibana elasticsearch user
  expect:
    command: sudo -E /usr/share/kibana/bin/kibana-keystore add elasticsearch.username
    responses:
      'Overwrite\? \[y/N\]': "y"
      'username': "{{ elasticsearch_username }}"

没有错误

TASK [Create kibana elasticsearch user] *********************************

已更改:[xxx.xxx.xxx.xxx]

经过更多测试,我看到用户名已被填充,但似乎可能不会发送返回以继续。

ansible-vvvv

fatal: [10.14.12.113]: FAILED! => {
"changed": true,
"cmd": "/usr/share/kibana/bin/kibana-keystore add elasticsearch.username",
"delta": "0:00:30.613915",
"end": "2019-03-21 19:26:01.959953",
"invocation": {
    "module_args": {
        "chdir": null,
        "command": "/usr/share/kibana/bin/kibana-keystore add elasticsearch.username",
        "creates": null,
        "echo": false,
        "removes": null,
        "responses": {
            "Enter value for elasticsearch.username": "kibana"
        },
        "timeout": 30
    }
},
"msg": "command exceeded timeout",
"rc": null,
"start": "2019-03-21 19:25:31.346038",
"stdout": "\u001b[1G\u001b[0JEnter value for elasticsearch.username: \u001b[41Gkibana\r\r\n\u001b[41G",
"stdout_lines": [
    "\u001b[1G\u001b[0JEnter value for elasticsearch.username: \u001b[41Gkibana",
    "",
    "\u001b[41G"
]

}

提前感谢你的帮助

相关内容