1

既存の mcollective インベントリ スクリプトを更新しようとしています。スクリプトは現在、利用可能なアップデートに関する情報を収集しています。特定の「真」の値を、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}必要な更新がtrue の場合のみです。それ以外の場合は、プレースホルダー (「-」など) が機能します。出力は次のようになります。

||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ルビーではない私の心が想定していたように、おそらく反復していないことに気づきました。しかし、フォーマット文字列がさまざまな事実で何度も使用されているため、どこかで繰り返しが発生しているに違いありません。上記で試みたように、フォーマッタに各ファクトの値を代入するように指示する方法はありますか?

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1