Назад | Перейти на главную страницу

Конкатенированный поиск Hiera из yaml

Я пытаюсь настроить модуль puppet-logstash через Hiera. Когда я звоню hiera('profiles::logstash::config'), возвращаемое значение - составная строка. Он говорит мне, что он не может преобразовать 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?

Вы можете заменить 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 звонки.