Поиск плана: не удалось найти класс

При запуске плана Puppet, который использует функцию lookup {} для Hiera, я получаю сообщение об ошибке:

The target node: 'computer1.domain.com' errored with a message: Internal Server Error: org.jruby.exceptions.RuntimeError: (PreformattedError) Evaluation Error: Error while evaluating a Method call, Could not find class ::- profile::app_update_3 for computer1.domain.com (file: /opt/puppetlabs/server/data/orchestration-services/code/environments/development/site-modules/profile/plans/package_install_plan.pp, line: 18, column: 40) on node computer1.domain.com

Класс плана:

plan profile::package_install_plan (
  TargetSpec $targets,
){

  $targets.apply_prep

  $apply_results = apply($targets, '_catch_errors' => true) {
    lookup('classes', Array[String], 'unique').include
    
    #include profile::app_update_3
  }

  #return $apply_results
  $apply_results.each |$result| {
    $target = $result.target.name
   
    if $result.ok
    {
      out::message("The target node: '${target}' returned a value: ${result.message}")
      out::message("Target node: '${target}'. Report: ${result.report}")
    }
    else
    {
      out::message( "The target node: '${target}' errored with a message: ${result.error.message}")
    }
  }
}

Мои данные Hiera настроены следующим образом:

  • ./ data / os / windows.yaml
  • ./ data / nodes / computer1.domain.com.yaml

В windows.yaml , У меня есть строки:

classes:
  - profile::app_update_1

и в computer1.domain.com.yaml у меня есть строки:

classes:
  - profile::app_update_3

В плане, если я использую , include profile :: app_update_3 он работает, поэтому я не вижу, что класс действительно отсутствует.

Если я удалю определенные классы : из computer1.domain.com.yaml , все заработает.

Если я добавлю определенные классы : в windows.yaml , это сработает.

Если это имеет какое-то отношение к массивам и строкам в функции plan lookup {} , я пробовал использовать несколько классов, хотя я верю в Yaml, XYZ: - Array1 ] по-прежнему является массивом.

Я проверил, нет ли в Ямле фальшивых персонажей, которые меня расстраивают.

Конкретные данные узла работают в других областях, поэтому я полагаю, что мой hiera.yaml в порядке.

Я пробовал закомментировать поиск ('классы'). Включить в . \ Manifestests \ site.pp на случай, если это мешает.

Здесь - это задокументированный пример Puppet (который использует старую функцию hiera_include ).

Что-то еще, чего я не понимаю. Когда мне следует использовать просто имя класса ( app_update_3 ), а когда следует включать полное имя модуля ( profile :: app_update_3 )? Я предполагаю, что когда модуль вызывает один из своих классов, я просто использую app_update_3 , но, похоже, это не работает.

У меня кончились идеи, поэтому, если кто-нибудь может направить меня на правильный путь, я был бы очень благодарен.

TIA

(Puppet Enterprise: v2019.8.4)

0
задан 17 January 2021 в 13:14
1 ответ

Похоже, я не делал ничего плохого, и все в порядке. В отчаянии я переписал computer1.domain .com.yaml файл в системе Linux - который работал.

Затем я сравнил два файла и, просмотрев оригинал в Notepad ++, обнаружил следующее: enter image description here

Между дефисом и «профилем» нет символа. Понятия не имею, как я не набрал ни одного символа. Никакое количество бревен не найдет персонажа.

VSCode (Windows) теперь кажется счастливым.

0
ответ дан 24 April 2021 в 02:15

Теги

Похожие вопросы