У вас есть два варианта:
Либо вы пишете все вопросы с помощью ожидаемого модуля
- name: Run do-release-upgrade.
expect:
command: do-release-upgrade
responses:
Question:
- N
- N
- N
- ...
Возможно, это будет самое безопасное решение, потому что вы действительно контролировать то, что происходит, и вы можете даже регулярное выражение сценария, который вопрос, что вы ожидаете со второй формой модуля
- name: Run do-release-upgrade.
expect:
command: do-release-upgrade
responses:
Configuration file '/etc/pam.d/login'.*: N
Тем не менее, это заставляет вас либо сценарий весь вопрос или быть на сто процентов уверен, что вы всегда есть одинаковое количество вопросов.
Или вы можете использовать служебную команду yes
, которая отвечает по умолчанию y
, но может ответить как угодно, передавая в качестве аргумента
Имя
да - выводить строку до тех пор, пока не будет убит
Конспект
да [STRING] ...
да ОПЦИЯ
Описание
Повторно выводите строку со всеми указанными STRING или 'y'.
Источник: https://linux.die.net/man/1/yes
Использование по умолчанию yes
$ yes
y
y
y
y
^C
Использование yes с аргументом
$ yes N
N
N
N
N
^C
Таким образом, вы можете изменить задачу на
- name: Run do-release-upgrade.
shell: yes N | do-release-upgrade
Примечание : вам нужно перейти с командного модуля на модуль оболочки , поскольку командный модуль не допускает использование каналов (|
)
Команда (и) не будут обрабатываться через оболочку, поэтому такие переменные, как $ HOME, и такие операции, как "<", ">", "|", ";" и "&" не будет работать. Используйте модуль оболочки, если вам нужны эти функции.
Источник: https://docs.ansible.com/ansible/latest/modules/command_module.html