Я пытаюсь настроить модуль puppet-logstash через Hiera. Когда я звоню hiera('profiles::logstash::config')
, возвращаемое значение - составная строка. Он говорит мне, что он не может преобразовать String в хеш.
shipper.pp
class profiles::logstash::shipper() {
$shipper_config = hiera('profiles::logstash::config')
notice("${shipper_config}")
class { 'logstash':
ensure => 'present',
version => '1.4.1-1_bd507eb',
status => 'enabled',
}
profiles::logstash::config { $shipper_config: }
include logstash
}
hostname.yaml
classes:
- os::repo
- profiles::logstash::shipper
profiles::logstash::config:
- {content: this is a test, order: 10}
Вывод при использовании с notice()
:
order10contentthis is a test
Я неправильно заказал свой YAML?
Вы можете заменить hash_extract
логика простым
$logstash_configs = hiera('profiles::logstash::config_settings')
create_resource('profiles::logstash::config',$logstash_configs)
(без notify
ресурсы, их нужно будет переместить в определенный тип profiles::logstash::config
.)
Чтобы это сработало, значение должно использовать желаемый заголовок ресурса в качестве ключа во вложенном хэше:
profiles::logstash::config_settings:
shipper:
content: 'this is a test'
order: '10'
В config_array
устарело тогда.
Обратите внимание, что hiera_hash
требуется только в том случае, если вы хотите объединить хеш-значения из нескольких уровней иерархии. Значения хэша обычно следует получать с помощью простого hiera
звонки.