Назад | Перейти на главную страницу

Ansible expect не передает ответ в хранилище ключей kibana

Ansible expect не передает доступную переменную при первом проходе. Если я вношу изменения и повторно запускаю скрипт, добавляя дополнительный вопрос для ответа, то скрипт, кажется, работает, но если я просто хочу настроить этот сценарий первого запуска, он не будет работать должным образом.

Сценарий первого запуска, он создает настройку в хранилище ключей, но никогда не завершается, настройка 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]

При дополнительном тестировании я вижу, что имя пользователя заполняется, но похоже, что он может не отправлять ответ для продолжения.

анзибль -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"
]

}

Заранее спасибо за вашу помощь