ALT Server 11.0 Установлены и настроены пакеты: puppet-8.4.0-alt2.noarch puppetserver-8.4.0-alt2.noarch При запуске агента на клиенте выдает ошибку сервера (даже при отсутствии любых манифестов) # puppet agent -t Info: Using environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Notice: Requesting catalog from rpa2:8140 (10.168.72.28) Notice: Catalog compiled by rpa2 Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: undefined method `exists?' for nil:NilClass Did you mean? exit Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run В логе puppetserver выдает следующее: 2025-06-19T14:41:36.721+03:00 ERROR [qtp1658927374-52] [puppetserver] Puppet Server Error: undefined method `exists?' for nil:NilClass Did you mean? exit /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/type/user.rb:514:in `exists?' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/file_system/file_impl.rb:165:in `replace_file' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/file_system/jruby.rb:23:in `replace_file' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/file_system.rb:419:in `replace_file' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/indirector/json.rb:19:in `save' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/indirector/indirection.rb:326:in `save' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/node/facts.rb:22:in `save' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/indirector/catalog/compiler.rb:45:in `save_facts_from_request' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/indirector/catalog/compiler.rb:54:in `find' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/indirector/indirection.rb:230:in `find' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/api/indirected_routes.rb:121:in `do_find' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/api/indirected_routes.rb:54:in `block in call' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/context.rb:64:in `override' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet.rb:287:in `override' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/api/indirected_routes.rb:53:in `call' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/api/server/v3.rb:18:in `block in wrap' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/route.rb:85:in `block in process' org/jruby/RubyArray.java:1989:in `each' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/route.rb:84:in `process' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/route.rb:91:in `process' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/route.rb:91:in `process' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/handler.rb:88:in `block in process' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/handler.rb:71:in `block in with_request_profiling' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/util/profiler/around_profiler.rb:59:in `profile' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/util/profiler.rb:53:in `profile' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/handler.rb:67:in `with_request_profiling' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/handler.rb:87:in `block in process' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/handler.rb:94:in `respond_to_errors' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/network/http/handler.rb:86:in `process' uri:classloader:/puppetserver-lib/puppet/server/master.rb:69:in `block in handleRequest' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/context.rb:64:in `override' /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet.rb:287:in `override' uri:classloader:/puppetserver-lib/puppet/server/master.rb:68:in `handleRequest' т.е. по идее ошибка в файле /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/type/user.rb в районе строки 514 строки 505-515: # This method has been exposed for puppet to manage users and groups of # files in its settings and should not be considered available outside of # puppet. # # (see Puppet::Settings#service_user_available?) # # @return [Boolean] if the user exists on the system # @api private def exists? provider.exists? ###!!! строка 514 !!!### end # rpm -qf /usr/lib/ruby/gemie/gems/puppet-8.4.0/lib/puppet/type/user.rb gem-puppet-8.4.0-alt2.noarch Посмотрел этот файл на github - вроде всё правильно. Потом сравнил с рабочей версией puppet сервера развернутого на основе ALT Server 10.4 # rpm -qf /usr/lib/ruby/gemie/gems/puppet-7.20.0/lib/puppet/type/user.rb gem-puppet-7.20.0-alt2.p10.0.noarch Там этот метод описан чуток по другому: def exists? provider&.exists? end После provider добавлен & Привел к тому же виду файл на ALT Server 11.0 и после перезапуска puppetserver агент получает и выполняет манифесты без ошибок # puppet agent -t Info: Using environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Notice: Requesting catalog from rpa2:8140 (10.168.72.28) Notice: Catalog compiled by rpa2 Info: Caching catalog for rpa2 Info: Applying configuration version '1750334956' Notice: /Stage[main]/Main/Node[default]/File[/tmp/1.txt]/ensure: defined content as '{sha256}932f3c1b56257ce8539ac269d7aab42550dacf8818d075f0bdf1990562aae3ef' (corrective) Notice: Applied catalog in 0.03 seconds PS. Посмотрел на Debain 12 - там так же указано provider.exists? и puppet сервер и агенты работают. Не специалист по ruby, но кажется тут всплыли какие-то особенности ALT сборки.
Актуально для версий: puppet-8.4.0-alt2 puppetserver-8.4.0-alt4