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"
]
}
Заранее спасибо за вашу помощь