Как исправить ошибки с недопустимыми параметрами в манифестах Puppet?

Вопрос или проблема

У меня возникла, казалось бы, невозможная ошибка в очень простом puppet manifest. Я просто пытаюсь использовать модуль example42 puppet-puppet для запуска puppetmaster (с puppet 3.1.0). Вот мой site.pp:

node 'se2' { 
    class { 'puppet::server' :
        mode => 'server' }    
}
Exec { path => "/usr/bin:/usr/sbin:/bin:/sbin" }
node default { }

С этим я получаю ошибку:

Info: Loading facts in /var/lib/puppet/lib/facter/last_run.rb
Info: Loading facts in /var/lib/puppet/lib/facter/puppi_projects.rb
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter mode at /etc/puppet/manifests/site.pp:7 on node se2

(строка 7 — это строка с mode)

Должно быть, я делаю что-то глупое, из того, что я вижу, mode является допустимым параметром:

https://github.com/example42/puppet-puppet/blob/master/manifests/init.pp#L320

Есть предложения?

Вы ссылаетесь на server.pp, вызывая
puppet::server

Посмотрите этот класс для puppet::server
https://github.com/example42/puppet-puppet/blob/master/manifests/server.pp

Чтобы ссылаться на класс с параметром ‘mode’, используйте puppet.pp:

node 'se2' { 
  class { 'puppet' :
    mode => 'server',
  }    
}
Exec { path => "/usr/bin:/usr/sbin:/bin:/sbin" }
node default { }

Внизу этой страницы есть это:

### PuppetMaster configuration
if $puppet::mode == 'server' {
  include puppet::server
}

Но ваш класс уже puppet::server. Я не очень хорошо знаком с написанием провайдеров, но класс, включающий сам себя, вряд ли будет работать. Можете попробовать дать вашему классу другое имя?

Ответ или решение

Теория

Ошибка "Invalid parameter" в манифестах Puppet обычно возникает, когда в класс или определение передан аргумент, который не поддерживается или не допускается этим классом. В случае с использованием модуля example42 для Puppet master, необходимо понимать структуру и иерархию классов в данном модуле. Ошибка говорит о том, что параметр mode недопустим в контексте использования puppet::server.

Пример

Вы используете следующий код в файле site.pp:

node 'se2' { 
    class { 'puppet::server' :
        mode => 'server'
    }    
}
Exec { path => "/usr/bin:/usr/sbin:/bin:/sbin" }
node default { }

Ошибка возникает, потому что класс puppet::server не ожидает параметра mode. Согласно документации и доступным ресурсам модуля, параметр mode необходимо передавать в класс puppet, но не в puppet::server.

Применение

Для исправления ошибки необходимо изменить ваш код следующим образом:

node 'se2' { 
    class { 'puppet' :
        mode => 'server',
    }    
}
Exec { path => "/usr/bin:/usr/sbin:/bin:/sbin" }
node default { }

Данное изменение передает параметр mode в основной класс puppet, который затем управляет включением других подклассов, таких как puppet::server, в зависимости от значения режима. Это подход, прописанный в документации example42, который соответствует механизму работы модуля.

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

Оцените материал
Добавить комментарий

Капча загружается...