У меня проблема с кукольным делом и мои структурированные факты (хеши).puppetdb строит структурированные факты, такие как хэши
Хеши будут изрезаны через мой кукольный театр.
Ubuntu 14.04
puppetserver = 3.8.7
facter = 2.4.4
puppetdb = 2.3.8-1
В моей puppet.conf на клиентах и сервере я включил:
stringify_facts = false
В моем site.pp я после вступления:
if is_hash($::os) {
notify {'hash':}
notify {$os['family']:}
}
if is_string($::os) {
notify {'string':}
notify {$os['family']:}
}
Если в моей марионетке. conf на сервере:
storeconfigs = true
storeconfigs_backend = puppetdb
и t он марионетку работает.
я получаю следующее сообщение на клиенте puppetrun:
os is not a hash or Array when accesssing it with family.
Если я изменил мой site.pp к только:
if is_string($::os) {
notify {'os is a string':}
}
Тогда я получаю сообщение -> «ОС является строкой '
Если я изменить puppet.conf на моем сервере, чтобы:
storeconfigs = false
storeconfigs_backend = puppetdb
тогда все в порядке. os будет идентифицирован как хэш.
У кого-нибудь есть идея? Пожалуйста, помогите :) Танер
Я предполагаю, что из 'is_hash', что вы используете' puppetlabs-stdlib', правильно? Я думал, что внутренние факты не были хешей вообще с Facter <3.0. Кроме того, это, вероятно, не имеет никакого эффекта, но почему вы переходите из os global ('$ :: os') в os local (' $ os') в свой 'site.pp'? –
Спасибо за ответ. – mobios
Спасибо за ответ Matt. $ :: os и $ os в моей манифесте имеет ту же самую переменную os. В этом примере у меня нет переменных localscope. Да, вы правы, метод «is_hash» - от марионетки-stdlib. Поскольку facter 2.0 facter может обрабатывать структурированные факты, см. Здесь https://docs.puppet.com/facter/2.2/fact_overview.html#writing-structured-facts. И в моей проблеме, если я деактивирую puppetdb, все в порядке :(os будет идентифицироваться как хэш. – mobios