Я читаю Документация по Puppet по добавлению настраиваемого факта. Большая часть информации связана с созданием модуля, работающего на агенте.
В моем случае мне просто нужна простая переменная среды, которую я мог бы установить с мастера для каждого узла. Тогда мой ENC сделает запрос PuppetDb, чтобы узнать, какую среду он должен обслуживать.
Могу ли я это сделать, или все факты исходят от агента?
кукольный facts
всегда информация, отправляемая агентом мастеру. Таким образом, вы не можете установить факт на стороне кукловода.
Но у вас есть возможность настроить среду агента с марионеточными квитанциями (например, с помощью [puppet_config_providers] [1]).
puppet_config { 'agent/environment':
value => $::puppet_environment,
}
Однако это изменение будет учтено только при следующем запуске марионетки.
[1] https://forge.puppet.com/camptocamp/puppet_config_providers
Я могу это сделать,
Да, это возможно. Можно создать собственный факт в марионеточном модуле, например запустите какой-нибудь код ruby, чтобы узнать версию установленного программного обеспечения:
имя_модуля / lib / facter / customfact.rb
Facter.add("customfact") do
setcode do
123
end
end
Приведенный выше код находится на Puppetmaster и когда puppet
работает, например десять разных агентов, результат, т.е. 123
и имя хоста каждого узла будет зарегистрировано в PuppetDB и его можно будет просмотреть в Puppetboard.
или все факты исходят от агента?
Никакие нестандартные факты не хранятся на Мастере Марионеток.