Унаследованы ли настройки Hiera при включении класса? - PullRequest
0 голосов
/ 06 января 2020

У меня есть класс Puppet Foo со связанным файлом Foo.yaml, содержащим настройки Hiera. Мне нужно создать класс-потомок (Bar), который включает в себя все настройки и код из Foo, а также некоторые дополнительные настройки Hiera.

Достаточно, чтобы использовать «include Foo» в определении класса Bar и создать Bar.yaml с дополнительные настройки? Или я должен дополнительно скопировать Foo.yaml в Bar.yaml и добавить новые настройки в Bar.yaml? Первый подход предпочтительнее, но я не уверен, что он будет работать.

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Я провел практические эксперименты с классами кукол. К сожалению, кажется, что Hiera не импортирует настройки, связанные с включенными ролями. Он импортирует настройки только из файла, связанного с текущей ролью.

Так что, если вы не хотите добавлять новые настройки для каждого сервера, существует только одно решение: копировать содержимое исходного файла Hiera в новый файл и добавление необходимых настроек там. После этого вам придется вручную синхронизировать c все новые настройки в настройках родительской и нисходящей роли в Hiera.

Интересно, почему создатели Puppet решили изобрести велосипед и разработать имитацию объектно-ориентированного стиль с нуля вместо принятия известных и проверенных подходов ...

0 голосов
/ 07 января 2020

Достаточно сделать require или include, чтобы включить все ресурсы из другого класса (используйте require, если вы хотите обеспечить порядок). Но при этом вы не сможете получить доступ к настройкам hiera из другого класса. Для этого я рекомендую искать в классе Bar, например,

class Bar (
  $param1 = lookup("Foo::param1")
) {
  // code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...