首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MCollective库存清单-有条件地替换某些事实

MCollective库存清单-有条件地替换某些事实
EN

Stack Overflow用户
提问于 2017-02-02 23:43:33
回答 1查看 92关注 0票数 1

我正在尝试更新一个现有的集体库存脚本。该脚本当前收集有关可用更新的信息。我想用标记替换某些“真”值,这将在复制到我的wiki时产生一个复选框。下面是我当前脚本的简化版本(更少的字段)。

代码语言:javascript
复制
# 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},但只有在需要更新时才使用true。否则,占位符(如'-')将工作。输出如下:

代码语言:javascript
复制
||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|

我想让它看起来像这样

代码语言:javascript
复制
||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|

我最初的尝试是做这样的事情:

代码语言:javascript
复制
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可能并不像我的非红宝石思维所设想的那样迭代。但是在某个地方,肯定会有迭代发生,因为格式字符串被多次使用,并且有不同的事实。是否有一种方法可以告诉格式化程序像我前面所尝试的那样,用值来代替每个事实?

你们谁能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-03 17:45:09

经过更多的探索,我发现我只是把三元值转换放在了错误的地方。如果将该值放置在字段列表中,则工作正常。这是我的工作代码:

代码语言:javascript
复制
# 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

老实说,我不知道为什么.必须有一些迭代器来评估库存中每个主机的字段。如果任何人有更多的洞察力,可以自由地发布另一个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42014394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档