2015-12-14 2 views
0

Я видел много вопросов рядом с этим, но не совсем с тем, что я прошу, поэтому, пожалуйста, помогите мне в этом. В моем файле YAML У меня есть иерархия, такие какИнтерпретация вложенных ямлов с помощью hiera?

## application.yaml 
application::params::api: 
    consumers: 
    app1: 
     id: 'appname1' 
     key: 'key1' 
    app2: 
     id: 'appname2' 
     key: 'key2' 

Тогда в приложениях Params

## params.pp 
class application::params { 
    $application = hiera('application::params::api->????->app1->???->id') 
} 

Вопросительные знаки являются то, что я использую для запуска на следующий уровень иерархии, я неопределенными как должны быть мои разделители? Я вижу, что это посыпается по всему нашему коду, но не может найти пример того, как он загружается/вызывается в hiera

Я бы использовал только $application = hiera('application::params::api::app1::id')?

+0

Как выглядит марионетный код для класса/определения, который будет потреблять этот ямль? – ptierno

ответ

2

Обозначение :: обозначение Puppet специфическое и не имеет особого значения для Hiera, но в деталях можно использовать пунктирные ключи. Выражение hiera('application::params::api.consumers.app1.id') вернет значение «appname1» при использовании данных из вашего примера.

Дополнительная информация о Hiera Lookup Keys.

+0

вы в этом уверены? – ptierno

+0

Да, я уверен. Я написал код, который разрешает такие ключи в Hiera. –

+0

Принято и плюс один, спасибо – ehime

0

Вы должны воспользоваться функцией create_resources и, возможно, использовать define, а не class, чтобы сделать его повторяемым.

Пример следующим образом:

# application/init.pp 
class application { 
    create_resources('application::app', hiera('application::apps')) 
} 

# application/app.pp 
define application::app(id, key) { 
    # do stuff with id and key 
} 

Это плохой пример, и вся ваша концепция отклоняется от лучших практик. Но это должно с некоторыми исследованиями привести вас к тому, где вы хотите быть.

Надеюсь, это было полезно.

Смежные вопросы