Puppet: Como corrigir “Invalid resource type file_line”?

1

Eu tenho um servidor Puppet recém-instalado com apenas um módulo configurado e um cliente gerenciado.

Este é um módulo MOTD e parece assim:

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']
#    }
}

Quando executo puppet agent -t no cliente, obtenho o resultado adequado:

[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 ~]#

Mas se eu descomentar a seção "file line" no arquivo init.pp do módulo e, em seguida, executar puppet agent -t no cliente, recebo a seguinte resposta:

[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 ~]#

A linha 17 aponta para a declaração "file_line". Eu tenho exatamente o mesmo módulo em outro ambiente Puppet e funciona como um encanto. Pesquisei no Google e encontrei uma postagem que recomenda adicionar:

pluginsync = true

para a seção [main] de /etc/puppet/puppet.conf na máquina do cliente e eu fiz isso, mas ainda recebo o mesmo erro.

Alguma ideia de como corrigir esse problema ou por que isso acontece?

    
por Itai Ganot 15.03.2015 / 11:08

1 resposta

4

Você provavelmente precisará instalar a biblioteca padrão . Em sua outra instalação, isso pode ter sido puxado por algum outro módulo que você instalou.

Depois disso, use-o com include stdlib .

    
por 15.03.2015 / 11:18