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