Ожидаемое ожидание не отправка ответа

Я новичок в ANSIBLE и пробую это, написав ANSIB Playbook для установки графита, как часть этого у меня есть graphite-manage syncdb Команда, которую я хотел бы автоматизировать.

Я написал это задание, чтобы автоматически отвечать на запросы, но по какой-то причине оно застревает и прерывается по таймауту. "msg": "command exceeded timeout" и кажется, что он не отправляет мой ответ на предложенный ответ. Хотя, возможно, это формат, который я использовал, и я проверил образцы на ANSIBLE DOCS, но это действительно просто без дополнительной информации.

Вот мой образец, пожалуйста, посмотрите:

---
    - hosts: localhost
      tasks:
      - name: graphite-web syncdb
        expect:
          command: sudo graphite-manage syncdb
          responses:
            'Would you like to create one now? (yes/no):': 'yes'
            'Username (leave blank to use "root"):': '\n'
            'Email address:': 'test@test.com'
            'Password:': '123123'
            'Password (again):': '123123'

Это вывод журнала, который я получил:

fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "sudo graphite-manage syncdb", "delta": "0:00:30.107393", "end": "2018-11-12 15:39:01.897639", "msg": "command exceeded timeout", "rc": null, "start": "2018-11-12 15:38:31.790246", "stdout": "\u001b[36;1mOperations to perform:\u001b[0m\r\n\u001b[1m  Synchronize unmigrated apps: \u001b[0maccount, cli, render, whitelist, metrics, url_shortener, dashboard, composer, events, browser\r\n\u001b[1m  Apply all migrations: \u001b[0madmin, contenttypes, tagging, auth, sessions\r\n\u001b[36;1mSynchronizing apps without migrations:\u001b[0m\r\n  Creating tables...\r\n    Running deferred SQL...\r\n  Installing custom SQL...\r\n\u001b[36;1mRunning migrations:\u001b[0m\r\n  No migrations to apply.\r\n\r\nYou have installed Django's auth system, and don't have any superusers defined.\r\nWould you like to create one now? (yes/no): ", "stdout_lines": ["\u001b[36;1mOperations to perform:\u001b[0m", "\u001b[1m  Synchronize unmigrated apps: \u001b[0maccount, cli, render, whitelist, metrics, url_shortener, dashboard, composer, events, browser", "\u001b[1m  Apply all migrations: \u001b[0madmin, contenttypes, tagging, auth, sessions", "\u001b[36;1mSynchronizing apps without migrations:\u001b[0m", "  Creating tables...", "    Running deferred SQL...", "  Installing custom SQL...", "\u001b[36;1mRunning migrations:\u001b[0m", "  No migrations to apply.", "", "You have installed Django's auth system, and don't have any superusers defined.", "Would you like to create one now? (yes/no): "]}

Большое спасибо за помощь.

1 ответ

Решение

Ключи в response карта - это регулярные выражения, поэтому ? а также (...) обрабатываются как управляющие символы регулярного выражения, что не соответствует.

Если вы действительно хотите передать всю строку, вы должны использовать:

responses:
  'Would you like to create one now\? \(yes/no\):': 'yes'

Но, учитывая, что больше нет create on now текст в любом другом приглашении, вы можете использовать:

responses:
  'create one now': 'yes'
Другие вопросы по тегам