既存のmcollective inventoryスクリプトを更新しようとしています。スクリプトは現在、利用可能な更新に関する情報を収集します。特定の「真の」値を、私のwikiにコピーするときにチェックボックスを生成するマークアップに置き換えたい。ここに私の現在のスクリプトの簡略化されたバージョン(より少ないフィールド)があります。MCollective Inventoryスクリプト - 条件付きで特定のファクトを置き換えます。
# 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
私は必要な更新が真あるとき{checkbox}done{checkbox}
が、のみでUpdate Needed
列の値を置き換えたいです。それ以外の場合は、プレースホルダ( ' - 'など)が機能します。出力は次のようになります。
||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
は、私のルビー以外の気分のように反復しないかもしれないと思っています。しかし、どこかで、フォーマット文字列がさまざまな事実で何度も使われているので、繰り返しが必要です。私が上で試したように、各事実に値を代入するようフォーマッタに指示する方法はありますか?
あなたのいずれかが正しい方向に向いていますか?
"更新が必要な場合は、{checkbox} done {checkbox}"の値を置き換える必要があります。あなたが実際にやろうとしているのは、その値を '-'で置き換えることですが、その事実が偽であるときだけです。あなたの説明はあなたの意図ですか、あなたのコードはあなたの意図ですか? –
@MattSchuchard行 'updates =(condition)? "{checkbox} done {checkbox}": " - "は三項演算子を使います。指定された条件に応じて、チェックボックスマクロまたはハイフンのいずれかと同じ 'updates'を設定します。 – vastlysuperiorman
あなたの意図は、コードがやっていることです。その情報を使って、 'do'は何かを繰り返すのではなく、' inventory'をコードブロックとして指定するだけで、その機能について詳しく説明することができます。ここで本当に役立つのは、あなたが望む出力が何であるかを示して、推測する必要がない場合です。 –