Puppet 创建资源-can';t将字符串转换为哈希

Puppet 创建资源-can';t将字符串转换为哈希,puppet,logstash,Puppet,Logstash,我正在使用来自的elasticsearch日志存储模块 这就是我的希拉的样子 --- classes: - 'profile::logstash' profile::logstash::conf: package_url: "https://download.elasticsearch.org/logstash/logstash/packages/centos/logstash-contrib-1.4.2-1_efd53ef.noarch.rpm" 这是个人资料中的logstas

我正在使用来自的elasticsearch日志存储模块

这就是我的希拉的样子

---
classes:
  - 'profile::logstash'


profile::logstash::conf:
  package_url: "https://download.elasticsearch.org/logstash/logstash/packages/centos/logstash-contrib-1.4.2-1_efd53ef.noarch.rpm"
这是个人资料中的logstash.pp

class profile::logstash {

  $conf   = hiera('profile::logstash::conf',{})


  validate_hash($conf)


  create_resources('logstash',$conf)

}
我得到这个错误

Error: can't convert String into Hash at /tmp/vagrant-puppet-2/modules-0/profile/manifests/logstash.pp:10 on node pw-idx-11.local
Wrapped exception:
can't convert String into Hash
Error: can't convert String into Hash at /tmp/vagrant-puppet-2/modules-0/profile/manifests/logstash.pp:10 on node pw-idx-11.local
更新:

固定使用此

class profile::elasticsearch {

  class { '::elasticsearch':
    version => '1.1.1-1'
  }

  $elasticsearch_configs   = hiera_hash('profile::elasticsearch::instance',{})

  validate_hash($elasticsearch_configs)

  create_resources(elasticsearch::instance,$elasticsearch_configs)

  package { 'java-1.7.0-openjdk.x86_64':
    ensure => 'installed'
  }

}

这是一种复杂的方法,你呢

class profile::logstash($conf = {}) {
  validate_hash($conf)
  create_resources('logstash',$conf)
}
假设在你的site.pp中你已经

hiera_include('classes')

参见

上的一个例子,这是一种复杂的操作方法,那么

class profile::logstash($conf = {}) {
  validate_hash($conf)
  create_resources('logstash',$conf)
}
假设在你的site.pp中你已经

hiera_include('classes')

请参见

中的一个示例,您的数据不适合与
create\u resources
一起使用,这需要嵌套哈希

data_identifier:
  resource_title1:
    res1_param1: value
    res1_param2: value
  resource_title2:
    res2_param1: value
    ...

由于数据是平面散列,因此无法从中创建资源。您可能需要添加资源标题层。

您的数据不适合与
创建资源一起使用,这需要嵌套哈希

data_identifier:
  resource_title1:
    res1_param1: value
    res1_param2: value
  resource_title2:
    res2_param1: value
    ...

由于数据是平面散列,因此无法从中创建资源。您可能需要添加一个资源标题层。

是的,但这并没有回答问题-应该是一条评论。是的,但这并没有回答问题-应该是一条评论。克里斯:您有没有弄明白这种哈希格式?@Banjer,是的,请参阅上面的更新……克里斯:您有没有弄明白这种哈希格式?@Banjer,是的,请看上面的更新……我和OP有同样的问题;这解决了问题。Thx:)我和OP有同样的问题;这解决了问题。Thx:)