如何在Ansible中将playbook输出显示在一行中

100次阅读
没有评论

***localhost : ok=3 changed=1 unreachable=0 failed=0


## 解决方案
> 请注意以下操作可能涉及版本差异,务必在操作前备份。
### 方案1:使用`tr`命令替换换行为空格
如果你只是想将多行输出转换成单行输出,可以使用`tr`命令将换行符替换为空格。然而,这可能会导致输出的一部分信息丢失,因为换行符通常用于分隔不同的信息。

使用以下命令来实现这一点:
```bash
ansible-playbook playbookname.yaml | tr '\n' ' '

上述命令将playbook的输出通过管道传递给tr命令,将换行符替换为空格。但需要注意的是,这可能会使输出变得难以阅读,因为所有信息都会挤在一行中。

方案2:使用awk命令提取所需信息

如果你的目标是解析最后一行的信息,可以使用awk命令来提取需要的信息。以下命令将从输出中提取okchangedunreachablefailed的值,并将其显示在单行中。

ansible-playbook playbookname.yaml | awk '/ok=/ { for (i=3; i < 7; i++) { split($i,a,"="); printf a[1]":"a[2]" " } }'

在上述命令中,awk会选择包含ok=的行,并将每个key=value字段(从第3个到第6个)以=为分隔符拆分。这样可以获取键作为数组a的第一个元素,值作为第二个元素。最终,输出将显示为ok:3 changed:1 unreachable:0 failed:0

请注意,使用print替代printf可以将每个状态显示在不同的行上,以增加可读性。

方案3:自定义回调插件

如果上述方法不能满足你的需求,你还可以考虑编写自定义的回调插件来定制Ansible的输出格式。这可能涉及到更多的编程工作,但可以实现更精确的输出格式。

总之,根据你的实际需求选择适合的方法来将Ansible playbook的输出显示在单行中。

正文完