从Ansible执行命令时出现语法错误

时间:2020-01-29 15:57:31

标签: sed ansible yaml

请帮助解决Ansible引发的以下syntex错误:

错误!加载YAML时的语法错误。映射值不是 在这种情况下允许

错误似乎在

'/ app / iap_workspace / portals / workpro / dev / sanity / ansible / system / log_check.yml': 244行,第45列

但是可能 根据确切的语法问题放在文件的其他位置。

出现错误的行如下:

   - name: load average
     raw: uptime | sed 's/.*load average: //' | awk -F\, '{print $3}'| bc | nawk -v thres=2.0 '{if($1 < thres) print "GOOD"; else print "BAD";}'
                                        ^ here

我可能是错的,但这似乎是一个问题 不平衡的报价。

如果以引号开头的值,请确保 行以相同的引号结束。

例如这任意 例如:

foo: "bad" "wolf"

可以写为:

foo: '"bad" "wolf"'

2 个答案:

答案 0 :(得分:0)

此命令不会将任何阈值都抛出“坏”。此外,我们希望平均负载等于15分钟,即第3个值。我可以看到的是,最后一个值位置不是固定位置。那么,您能否给出一个命令,使我们可以通过用s/.*load average区分字符串来获得第三个值?

赞:

uptime | sed 's/.*load average: //' | awk -F\, '{print $3}'

答案 1 :(得分:0)

可执行命令正常运行| sed's /.*平均负载://'| awk -F \,'{print $ 3}' 平均负载后无空间: 如果将空格放在“:”之后,则ansible将作为其自身语法的一部分,例如我们如何将任何属性用于ansible。 例如- raw:(space)(您的命令)。