Назад | Перейти на главную страницу

Ошибка "Не удается преобразовать nil в строку" при запуске Puppet

При попытке использовать модули, скопированные в каталог модулей Puppet, мой клиент-марионетка возвращает «Не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: не удается преобразовать nil в строку» при подключении к главному серверу Puppet.

[root@puppetmaster modules]# rpm -qa *puppet*
puppet-2.7.18-1.el6.noarch
puppet-server-2.7.18-1.el6.noarch

[root@puppetmaster modules]# uname -sr
Linux 2.6.32-279.el6.x86_64

Код все проверяется и действителен. SELinux включен.

В этом случае файлы были перемещены с помощью «mv» вместо копирования с помощью «cp». SELinux не изменяет файлы в контекст назначения по умолчанию с помощью 'mv', как это было бы с 'cp'.

Из-за этого Puppet не мог прочитать файлы модуля, и, следовательно, «включить» в вызывающем файле .pp не удалось. Поскольку чтение было неудачным, код должен был быть нулевым.

Проверьте свойства SELinux каталогов модуля Puppet.

Puppet имеет свои собственные настройки SELinux, и ваши файлы должны быть настроены на него. Если скопировать откуда-то, они будут неверными.

[root@puppetmaster modules]# ls -Z
drwxr-xr-x. root root unconfined_u:object_r:puppet_etc_t:s0 acroread
drwxr-xr-x. root root unconfined_u:object_r:puppet_etc_t:s0 apt
drwxr-xr-x.  999 1000 unconfined_u:object_r:admin_home_t:s0 bindserver

Чтобы вернуть это значение по умолчанию, вы можете запустить restorecon -R /etc/puppet, который рекурсивно сбросит все модули марионетки до функциональных настроек SELinux для использования в Puppet.

HT: @MichaelHampton