Кукольный: Как исправить "Недопустимый тип ресурса file_line"?
У меня недавно установленный сервер Puppet с настроенным только одним модулем и одним управляемым клиентом.
Это модуль MOTD и выглядит так:
class motd {
file { "/etc/custom_motd.sh":
path => '/etc/custom_motd.sh',
ensure => present,
owner => "root",
group => "root",
mode => "775",
content => template('motd/custom_motd.sh.erb'),
#require => Class['nagios_client'],
}
# file_line { 'enable motd':
# ensure => present,
# line => '/etc/custom_motd.sh',
# path => '/etc/profile',
# require => File['/etc/custom_motd.sh']
# }
}
Когда я бегу puppet agent -t
на клиенте я получаю правильный результат:
[root@pnd01 ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for pnd01.company.com
Info: Applying configuration version '1426413575'
Notice: /Stage[main]/Motd/File[/etc/custom_motd.sh]/ensure: created
Notice: Finished catalog run in 0.24 seconds
[root@pnd01 ~]#
Но если я раскомментирую раздел "строка файла" в init.pp
файл модуля, а затем запустить puppet agent -t
на клиенте я получаю следующий ответ:
[root@pnd01 ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type file_line at /etc/puppet/environments/production/modules/motd/manifests/init.pp:17 on node pnd01.company.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
[root@pnd01 ~]#
Строка 17 указывает на объявление "file_line". У меня точно такой же модуль в другой среде Puppet, и он работает там как шарм. Я посмотрел его в Google и нашел сообщение, которое рекомендует добавить:
pluginsync = true
к [main]
раздел /etc/puppet/puppet.conf
на клиентской машине, и я сделал это, но я все еще получаю ту же ошибку.
Любая идея, как решить эту проблему или почему это вообще происходит?
2 ответа
Скорее всего, вам нужно установить стандартную библиотеку. На другой вашей установке это могло быть вызвано другим установленным вами модулем.
После этого используйте его с include stdlib
,
Установите stdlib, используя:
puppet module install puppetlabs-stdlib
Также включите строку ниже в начало вашего скрипта.
include stdlib