Hiera连接从yaml查找

我正在尝试通过Hieraconfigurationpuppet-logstash模块。 当我打电话给hiera('profiles::logstash::config') ,返回值是一个串联的string。 它告诉我,它不能把一个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错了吗?

你可以用一个简单的replacehash_extract逻辑

 $logstash_configs = hiera('profiles::logstash::config_settings') create_resource('profiles::logstash::config',$logstash_configs) 

(减去notify资源,那些将需要移动到定义的typesprofiles::logstash::config 。)

为了使这个工作,值必须使用所需的资源标题作为嵌套哈希键:

 profiles::logstash::config_settings: shipper: content: 'this is a test' order: '10' 

那么config_array已经过时了。

请注意,仅当您希望合并来自多个层次结构级别的散列值时才需要hiera_hash 。 通常应该使用纯粹的hiera调用来检索哈希值。