如何在 Ansible 中用命令模块替换 shell 模块?

如何在 Ansible 中用命令模块替换 shell 模块?

我需要一点帮助。

在下面的例子中,我需要shellcommand模块替换。但我很困惑,因为 command它不能与管道一起使用。

所以请给我这个任务的解决方案。例如:

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

由于每个命令的输出都依赖于下一个命令,我将如何拆分这个任务?

答案1

我需要shellcommand模块替换。

也许您可以提供更多有关原因和目标的背景信息。

目前我猜根据man zypper你尝试

包 (pa) [选项] [存储库]...

列出所有可用的包或指定存储库中的所有包。类似于zypper search -s -t package

首先,然后喜欢进一步推进某件事。


但我很困惑command是不是因为管道不工作。

是的,情况确实如此,这也是预期行为。请参见示例


所以请给我这个任务的解决方案

不会有“那个解决方案”,但您可以查看以下从最可取到最不可取的方法的列表:

或者,至少,只使用shell带有管道的命令(以及您当前给出的示例)

相关内容