В Ansible модули shell и command используются для выполнения команд на удалённых хостах, но есть важные отличия:
В чём разница между модулями shell и command в Ansible?
В Ansible модули shell и command используются для выполнения команд на удалённых хостах, но есть важные отличия:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Ansible модули shell и command используются для выполнения команд на удалённых хостах, но есть важные отличия:
commandвыполняет команду без использования оболочки (shell). Это безопаснее, так как не интерпретируются специальные символы оболочки, но нельзя использовать конструкции типа пайпов (|), перенаправления (>,<), переменные окружения и т.п.shellзапускает команду через оболочку (обычно/bin/sh), поэтому поддерживает все возможности shell: пайпы, перенаправления, переменные, условные конструкции.
Пример:
- name: Запуск простой команды
command: ls -l /tmp
- name: Использование пайпа через shell
shell: cat /var/log/syslog | grep error
Если не нужны возможности оболочки, лучше использовать command для безопасности и предсказуемости.