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

Использовать Puppetdb для переменной ENC?

Я читаю Документация по 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.

или все факты исходят от агента?

Никакие нестандартные факты не хранятся на Мастере Марионеток.