Я создал простой пользовательский факт:
Facter.add(:hello) do
setcode do
"Hello, world"
end
end
и поместите сюда (на кукловода):
/etc/puppet/modules/custom/lib/facter
Тестирую на марионеточном клиенте:
facter hello
и ничего не вижу.
В то время как эта команда работает (на марионеточном клиенте):
facter --puppet hello
Hello, world
Проверка, синхронизирован ли факт (на марионеточном клиенте):
puppetd --test --pluginsync
info: Retrieving plugin
info: Loading facts in /var/lib/puppet/lib/facter/hello.rb
info: Caching catalog for host.example.com
Похоже, пользовательский факт синхронизирован нормально. Я не могу понять, почему он недоступен через facter
.
Кроме того, как я могу использовать этот новый факт от Puppetmaster? Мне нужно построить простое условие на основе пользовательского факта.
Например, я добавил site.pp
(на кукловода):
$string = "$hello"
notice("Testing custom fact: $string")
Опять же, в системном журнале нет строки из notice
функция.
Я изучил много документации и до сих пор не могу понять, как заставить ее работать. Буду признателен, если кто-нибудь сможет изучить этот вопрос.
Спасибо.
Конфигурация: Ubuntu Server 12.04, Puppet 2.7.11, facter 1.6.5
Пользовательские факты из марионетки используются только в прогонах марионеток или когда вы используете --puppet
флаг на facter
. Если вас это не устраивает, поместите пользовательские факты в то место, которое будет всегда использовать фактер - см. Вот для подробностей.
Факт должен присутствовать при составлении каталога; вы, вероятно, не регистрируете сообщения с уведомлениями. Чтобы использовать это как условие:
if $hello == "Hello, world" {
notify { "found": }
}