Интерпретация вложенного yaml с помощью hiera?

Я видел много вопросов, близких к этому, но не совсем по тому, что я спрашиваю, поэтому, пожалуйста, помогите мне в этом. В моем файле yaml у меня есть иерархия, такая как

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

Затем в параметрах приложений

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

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

Могу ли я просто использовать $application = hiera('application::params::api::app1::id') ?


person ehime    schedule 14.12.2015    source источник
comment
как выглядит кукольный код для класса/определения, который будет использовать этот yaml?   -  person ptierno    schedule 15.12.2015


Ответы (2)


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

Подробнее о Ключах поиска Hiera.

person Thomas Hallgren    schedule 15.12.2015
comment
Вы уверены, что? - person ptierno; 15.12.2015
comment
Да, я уверен. Я написал код, который разрешает такие ключи в Hiera. - person Thomas Hallgren; 15.12.2015

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

Пример следующий:

# 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
}

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

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

person ptierno    schedule 15.12.2015