一千萬個為什麽

搜索

如何在一行中獲得Ansible playbook輸出?



在Ansible中,我們使用 ansible-playbook playbookname.yaml 運行劇本。輸出將是多行(如下所示)。我需要單行輸出。我怎麽弄到的?

PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0

轉載註明原文: 如何在一行中獲得Ansible playbook輸出?

一共有 2 個回答:

這仍然是一個XY問題,恕我直言,為什麽你想要在一個單一的行輸出呢?它需要什麽?

如果你不能解釋更多,並希望通過用空格替換換行符來使用命令| tr'\ n'''(你最終可能會丟失日誌的結尾)。

如果你的目標是解析最後一行的話

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

會給 ok:3改變:1不可達:0失敗:0

這將選擇包含 ok = 的行,並將 = 字符中的每個 key = value 字段(3到6)數組的第一個元素 a 和值作為第二個元素。

使用 print 而不是 printf 來將每個狀態放在不同的行上。

我不確定這是否可行,但可以在bash腳本中編寫相同的命令

#!/bin/bash

ansible-playbook playbookname.yaml > output.txt

# Then grep from output.txt what you want

grep -A 5 "PLAY" output.txt

可能不是好的方法,但會達到你想要的。