我正在尝试通过 Hiera 配置 puppet-logstash 模块。当我调用时hiera('profiles::logstash::config')
,返回值是一个连接的字符串。它告诉我它无法将字符串转换为哈希。
托运人.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
}
主机名.yaml
classes:
- os::repo
- profiles::logstash::shipper
profiles::logstash::config:
- {content: this is a test, order: 10}
与一起使用时的输出notice()
:
order10contentthis is a test
我的 YAML 顺序错误了吗?
答案1
你可以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
调用来检索哈希值。