Использовать 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

Другие вопросы по тегам