У вас, вероятно, есть две, если не три проблемы:
Смешивание синтаксисов
Модуль expect
имеет два синтаксиса, которые вы смешали.
Либо вы должны использовать его, просто предоставив последующие ответы:
responses:
Questions:
- response 1
- response 2
- response 3
Либо вы должны использовать его с (вопрос / ответ) в качестве (ключ / значение) пары
responses:
question 1: response 1
question 2: response 2
question 3: response 3
Когда вы сделали следующее:
# Author disclaimer, this is a bad syntax!
responses:
Questions:
- question 1: response 1
- question 2: response 2
- question 3: response 3
Вопросы, заданные для expect
, анализируются как регулярное выражение
Если вы используете пару вопрос / ответ, тогда вопросанализируется как регулярное выражениеИ в вашем вопросе у вас есть 5 символов, которые нужно экранировать, чтобы рассматривать их как буквальный, а не как синтаксис регулярных выражений: /
, .
, ?
, [
и ]
.
ИтакВаши ответы должны выглядеть следующим образом:
responses:
Configure sendmail with the existing \/etc\/mail\/sendmail\.conf\? \[Y\] : y
Configure sendmail with the existing \/etc\/mail\/sendmail\.mc\? \[Y\] : y
Reload the running sendmail now with the new configuration\? \[Y\] : y
Вы можете легко определить такие проблемы, бросая свои вопросы в объяснитель регулярных выражений, например regex101
Ваш тайм-аут, вероятно, слишком мал
Ваш timeout
, возможно, слишком мал, даже установлен на 60
, он все еще превышал тайм-аут в моей среде тестирования докеров, мне пришлось увеличить его до 120
чтобы оно работало.
Два возможных подхода к решению
- Вопросы / ответы в качестве ключа / значения:
---
- hosts: localhost
connection: local
tasks:
- name: Exec sendmailconfig
expect:
command: sendmailconfig
responses:
Configure sendmail with the existing \/etc\/mail\/sendmail\.conf\? \[Y\] : y
Configure sendmail with the existing \/etc\/mail\/sendmail\.mc\? \[Y\] : y
Reload the running sendmail now with the new configuration\? \[Y\] : y
timeout: 120
Список ответов
---
- hosts: localhost
connection: local
tasks:
- name: Exec sendmailconfig
expect:
command: sendmailconfig
responses:
Questions:
- y
- y
- y
timeout: 120
Эти два синтаксиса оба дают мне следующее резюме:
PLAY [localhost] ****************************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************
ok: [localhost]
TASK [Exec sendmailconfig] ******************************************************************************************************************************************
changed: [localhost]
PLAY RECAP **********************************************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0