Я пытаюсь найти способ в кукольном, чтобы получить текущие номера емкости zpool для моих серверов хранения FreeBSD, хранить их в пользовательских фактах и генерировать предупреждение, если емкость достигает "слишком высокий уровень. Ближайший матч к моей проблеме, что I've нашел до сих пор является: Returning multiple custom facts with puppet FacterPuppet: все пользовательские факты получают все результаты
Это указал мне на это решение:
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
Что я делаю неправильно?