Назад | Перейти на главную страницу

Проблемы при получении пользовательского факта Puppet

Я создал простой пользовательский факт:

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": }
}