强制 ansible 在控制台上打印我想要的内容

强制 ansible 在控制台上打印我想要的内容

我有几个任务要用 ansible 来完成(因为它是一个很棒的环境)。但是我想实现两件事:

  1. 在 stdout 上只有我想要的内容(我指的是我放在 msg 变量中的这个输出,并且没有其他的
  2. 我希望能够通过管道将此输出作为其他工具(如 grep、awk、sed 等)的输入。

有没有什么方法(不用自己编写 C++、Perl、Cobol、SQL、VisualBasic 和 Java 等代码)可以做到这一点?如果您必须编写永久代码,那么唯一的选择就是使用汇编代码,因此如果您想提出类似建议:请随意!

答案1

从设计上来说,这是不可能的。Ansible 在编写时没有明确区分 stout、stderr 甚至 Ansible 本身的输出与外部执行过程/函数的输出。为什么使用这种设计是有争议的,然而 Ansible 周围的社会甚至无法讨论它不太适合企业使用的可能性。

答案2

编写您自己的自定义标准输出回调插件。这种类型的插件(虽然不是标准输出)是报告工具,例如ARA 工作

有可能ansible-runner作为一个为自动化设计的稳定接口将会很有趣,如果它的输出选项是 JSON。


默认情况下,临时的 ansible 命令看起来有点像 JSON,而且可以解析,但这并不完全归功于开头的人性化可读的标头。

答案3

我认为你可以尝试登记获取命令的标准输出。例如,当您使用 shell 时。基本上,它会创建您可以迭代甚至更新的结构。有很多如何使用变量的示例: ansible 打印调试消息变量

关于第二部分,您也可以将 ansible 变量放在 shell 中作为命令的一部分。例子。但是如果你的任务存在本机 ansible 模块,最好使用它。

相关内容