Hiera 从 yaml 进行连接查找

Hiera 从 yaml 进行连接查找

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

相关内容