我正在尝试更新现有的mcollective库存脚本。该脚本目前收集有关可用更新的信息。我想替换某些" true"带有标记的值,当复制到我的wiki中时会生成一个复选框。这是我当前脚本的简化版本(更少的字段)。
# patching_inventory.mc
inventory do
puts "||Server||Update Needed||Package Count||Kernel Release||"
format "|%s|%s|%s|%s|"
fields { [
identity,
facts["apt_has_updates"],
facts["apt_updates"],
facts["kernelrelease"]
] }
end
我希望将Update Needed
列中的值替换为{checkbox}done{checkbox}
,但是当需要更新为真时,仅。否则,占位符(例如' - ')将起作用。输出如下:
||Server||Update Needed||Package Count||Kernel Release||
|host1|true|26|3.20.96|
|host2|false|0|4.18.120|
|host3|true|109|3.21.17|
...
|host197|true|26|3.20.96|
我希望它看起来像这样:
||Server||Update Needed||Package Count||Kernel Release||
|host1|{checbox}done{checkbox}|26|3.20.96|
|host2|-|0|4.18.120|
|host3|{checbox}done{checkbox}|109|3.21.17|
...
|host197|{checbox}done{checkbox}|26|3.20.96|
我最初的尝试是做这样的事情:
inventory do
updates = (facts["apt_has_updates"] == 'true') ? "{checkbox}done{checkbox}" : '-'
puts "||Server||Update Needed||Package Count||Kernel Release||"
format "|%s|%s|%s|%s|"
fields { [
identity,
updates,
facts["apt_updates"],
facts["kernelrelease"]
] }
end
但是我发现inventory do
可能没有像我认为的非红宝石头脑那样迭代。然而,在某处,必须发生迭代,因为格式字符串被多次使用不同的事实。有没有办法告诉格式化程序替换上面尝试的每个事实的值?
你们有没有人能指出我正确的方向?
答案 0 :(得分:0)
经过更多探索后,事实证明我只是将三元价值转换放在错误的位置。如果将值放在字段列表中,它可以正常工作。这是我的工作代码:
# patching_inventory.mc
inventory do
puts "||Server||Update Needed||Package Count||Kernel Release||"
format "|%s|%s|%s|%s|"
fields { [
identity,
facts["apt_has_updates"],
facts["apt_updates"] == "true" ? "{checkbox}done{checkbox}" : "-",
facts["kernelrelease"]
] }
end
我会说实话,我不确定为什么会有效...必须有一些迭代器正在评估清单中每个主机的字段。如果有人有其他见解,请随时发布另一个答案。