Как заменить модуль оболочки на командный модуль в Ansible?

Как заменить модуль оболочки на командный модуль в Ansible?

Мне нужна небольшая помощь.

В примере ниже мне нужно заменить shellна commandmodule. Но я запутался, так как commandэто не работает с pipe.

Поэтому, пожалуйста, дайте мне решение этой задачи. Например:

- name: Get the version
  become: true
  run_once: true
  shell: zypper pa | grep eric-odl | awk -F {'print $4'}
  register: odl_version

Как мне разделить эту задачу, если вывод каждой команды зависит от следующей команды?

решение1

Мне нужно заменить shellмодуль command.

Возможно, вы сможете предоставить более подробную информацию о том, почему и чего вы пытаетесь достичь.

В настоящее время я полагаю, что, согласно man zypperвашей попытке,

пакеты (pa) [опции] [репозиторий]...

Список всех доступных пакетов или всех пакетов из указанных репозиториев. Аналогично zypper search -s -t package.

сначала и хотелось бы продолжить с чем-то потом.


Но меня смущает, commandчто это не работает с трубой.

Правильно, это так и есть, это предполагаемое поведение. Смотрите пример.


Пожалуйста, дайте мне решение этой задачи.

«Того самого решения» не будет, но вы можете взглянуть на следующий список подходов, отсортированный от наиболее к наименее предпочтительному:

Или, по крайней мере, просто придерживайтесь shellкоманд с вертикальными линиями (и вашего примера в том виде, в котором он есть сейчас)

Связанный контент