Разница между puppet hiera () и lookup () в коде модуля puppet - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь переключиться с hiera () на lookup (), но это не работает. Раньше у меня была следующая строка кода:

if (hiera("ntp::enabled",0) == 1 ){

и все заработало правильно.

После простой замены hiera на lookup:

if (lookup("ntp::enabled",0) == 1 ){

Я получаю огромную ошибку:

    Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, 'lookup' expects one of:
  (NameType = Variant[String, Array[String]] name, ValueType = Type value_type?, MergeType = Variant[String[1], Hash[String, Scalar]] merge?)
    rejected: parameter 'value_type' expects a ValueType = Type value, got Integer
  (NameType = Variant[String, Array[String]] name, Optional[ValueType] value_type, Optional[MergeType] merge, DefaultValueType = Any default_value)
    rejected: expects 4 arguments, got 2
  (NameType = Variant[String, Array[String]] name, ValueType = Type value_type?, MergeType = Variant[String[1], Hash[String, Scalar]] merge?)
    rejected: parameter 'value_type' expects a ValueType = Type value, got Integer
  (OptionsWithName = Struct[{'name' => NameType = Variant[String, Array[String]], 'value_type' => Optional[ValueType = Type], 'default_value' => DefaultValueType = Any, 'override' => Optional[Hash[String, Any]], 'default_values_hash' => Optional[Hash[String, Any]], 'merge' => Optional[MergeType = Variant[String[1], Hash[String, Scalar]]]}] options_hash, BlockType = Callable[NameType = Variant[String, Array[String]]] block?)
    rejected: expects 1 argument, got 2
  (Variant[String, Array[String]] name, OptionsWithoutName = Struct[{'value_type' => Optional[ValueType = Type], 'default_value' => DefaultValueType = Any, 'override' => Optional[Hash[String, Any]], 'default_values_hash' => Optional[Hash[String, Any]], 'merge' => Optional[MergeType = Variant[String[1], Hash[String, Scalar]]]}] options_hash, BlockType = Callable[NameType = Variant[String, Array[String]]] block?)
    rejected: parameter 'options_hash' expects an OptionsWithoutName = Struct[{'value_type' => Optional[ValueType = Type], 'default_value' => DefaultValueType = Any, 'override' => Optional[Hash[String, Any]], 'default_values_hash' => Optional[Hash[String, Any]], 'merge' => Optional[MergeType = Variant[String[1], Hash[String, Scalar]]]}] value, got Integer (file: /etc/puppetlabs/code/environments/sandbox/modules/ntp_mycompany/manifests/init.pp, line: 38, column: 5) on node mybox.mycompany.com

Возможно, мне не хватает чего-то простого, но я подумал, что можно просто заменить устаревший вызов hiera () более новым вызовом lookup ().

1 Ответ

0 голосов
/ 10 января 2019

Я не эксперт по марионеткам, но, глядя на документацию для поиска , мне кажется, что требуется набор параметров, отличный от вызова hiera():

lookup( <NAME>, [<VALUE TYPE>], [<MERGE BEHAVIOR>], [<DEFAULT VALUE>] )

Если вы хотите указать значение по умолчанию с использованием позиционных опций, вам также необходимо заполнить значения для <VALUE TYPE> и <MERGE BEHAVIOR>. Похоже, альтернативой является предоставление хеша аргументов вместо списка. Если вы продолжите читать эти документы, вы увидите альтернативный способ вызова функции:

lookup( [<NAME>], <OPTIONS HASH> )

Пример этого механизма может выглядеть следующим образом :

lookup({"name" => "some::thing", "default_value" => "default"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...