Можно ли использовать модуль Ansible raw ssh как "ожидаем"?
Другими словами, можно ли использовать "ожидаемый" модуль по чистому SSH-соединению?
Я пытаюсь автоматизировать некоторые простые встроенные устройства, которые не имеют полноценного Python или даже оболочки. Ансибл raw
Модуль отлично работает для простых команд, но я бы хотел, чтобы все происходило в ожидаемой манере.
Можно ли это сделать?
1 ответ
expect
Модуль написан на Python, так что нет, это не сработает.
У Ansible есть модель взаимодействия с такими устройствами, как сетевые коммутаторы, которые аналогичным образом не запускают Python; Вы можете прочитать об этом в статье "Чем отличается автоматизация сети". Я не думаю, что это предложит какое-либо немедленное решение вашей проблемы, но предлагает способ достижения цели, если действительно важно интегрироваться с Ansible.
Вероятно, было бы проще использовать expect
программа вместо Ansible.
В Ansible 2.7 и выше вы можете использовать модуль cli_command. Это что-то вроде "ожидать", и ему не нужен питон для цели. https://docs.ansible.com/ansible/latest/modules/cli_command_module.html
- name: multiple prompt, multiple answer (mandatory check for all prompts)
cli_command:
command: "copy sftp sftp://user@host//user/test.img"
check_all: True
prompt:
- "Confirm download operation"
- "Password"
- "Do you want to change that to the standby image"
answer:
- 'y'
- <password>
- 'y'