Puppet で、FreeBSD ストレージ サーバーの現在の zpool 容量の数値を取得し、それらをカスタム ファクトに格納し、容量が「高すぎる」レベルに達した場合にアラートを生成する方法を考え出そうとしています。これまでに見つけた問題に最も近いのは、次のとおりです。 puppet Facter を使用して複数のカスタムファクトを返す
それは私にこの解決策を指摘しました:
operatingsystem = Facter.value('operatingsystem')
case operatingsystem
when "FreeBSD"
present_zpools = IO.popen('zpool list -H -o name').read.chomp
if ! present_zpools.empty?
Facter.add(:zpools) do
setcode do
zpools = IO.popen('for i in $(zpool list -H -o name); do echo $i; done').read.chomp.split("\n")
end
end
def addZpoolCapacityFact(zpool)
zpool_capacity = IO.popen('zpool get -H -o value capacity #{zpool}').read.tr('%','').chomp
Facter.add("capacity_" + zpool) do
setcode do
zpool_capacity
end
end
end
zpools = Facter.value(:zpools)
zpools.each do |zpool|
addZpoolCapacityFact(zpool)
end
end
end
しかし、私が期待していた結果はまったく得られません。
capacity_pool1: 10 30
capacity_pool2: 10 30
私が本当に期待していたとき:
capacity_pool1: 10
capacity_pool2: 30
私は何を間違っていますか?