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