我正在尝试通过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调用来检索哈希值。