Puppet - функция 'hiera_array' устарела в пользу использования 'lookup' - PullRequest
0 голосов
/ 04 июня 2018

У меня есть вопрос марионетки.(Я использую версию 5.1.0)

По этому пути: C: \ ProgramData \ PuppetLabs \ code \ environment \ production \ manifest У меня есть файл: site.pp Этот файл (/ etc / puppetlabs /puppet / manifest / site.pp) - это основная точка входа, используемая, когда агент подключается к мастеру и запрашивает обновленную конфигурацию.

Это содержимое файла:

node default {
  # This is where you can declare classes for all nodes.
  # Example:
  #   class { 'my_class': }
  #hiera_include('classes')
  include(hiera_array("classes", ))
}

Но когда я запускаю кукол с помощью команды применить куколку:

"C: \ Program Files \ Puppet Labs \ Puppet \ bin \ puppet" применить C: \ ProgramData \ PuppetLabs \ code \ сред \production \ manifts \ site.pp

Я получаю эту ошибку:

Warning: The function 'hiera_array' is deprecated in favor of using 'lookup'. See https://docs.puppet.com/puppet/5.1/referenc
e/deprecated_language.html
   (file & line not available)
Error: Function lookup() did not find a value for the name 'classes'

Поэтому я изменил код site.pp на:

node default {
  # This is where you can declare classes for all nodes.
  # Example:
  #   class { 'my_class': }
  #hiera_include('classes')
  include(lookup('classes', {merge => unique}, ))
}

(потому что я нашел этот документ: https://puppet.com/docs/puppet/5.1/hiera_migrate_functions.html)

И теперь я получаю только эту ошибку:

Error: Function lookup() did not find a value for the name 'classes'

Я не уверен, как это исправитьпотому что этот код работал месяц назад с той же командой apply.

Не могли бы вы мне помочь?

Спасибо!

1 Ответ

0 голосов
/ 04 июня 2018

Я получаю эту ошибку:

Warning: The function 'hiera_array' is deprecated in favor of using 'lookup'. See https://docs.puppet.com/puppet/5.1/referenc e/deprecated_language.html (file & line not available)
Error: Function lookup() did not find a value for the name 'classes'

Исправление: вы получаете предупреждение и об ошибке.Ошибка является отдельной, но показывает, что Puppet обрабатывает ситуацию, о которой предупреждает, делегируя новой функции lookup() внутренне.

Поэтому я изменил код site.pp на:

node default {
  # This is where you can declare classes for all nodes.
  # Example:
  #   class { 'my_class': }
  #hiera_include('classes')
  include(lookup('classes', {merge => unique}, ))
}

Да, это очень хороший и естественный способ устранения предупреждения, и похоже, что в этом оно было успешным.Но опять же, ошибка отдельная.Речь идет не о вашем манифесте, а о ваших данных .Как говорится, попытка поиска ключевых «классов» не удалась.Такой ключ не был найден.Вы не предоставили lookup() значение по умолчанию для возврата в этом случае, поэтому возникает ошибка.

Я не уверен, как это исправить, потому что этот код работал месяц назад спримените эту же команду.

Если Puppet однажды запустил один и тот же код без сообщения об ошибке, то между данными и тем, что было изменено, были данные.Возможно, однако, это потому, что вы сейчас запускаете Puppet от имени другого пользователя.Разные обычные пользователи имеют свое собственное местоположение по умолчанию для данных (и манифестов), и все они отличаются от местоположений, используемых при запуске Puppet системой.

...