Puppet netdev_stdlib:如何修复“无效的资源类型netdev_device”?

时间:2016-11-18 05:18:14

标签: puppet

我已经使用Vagrant在Oracle VirtualBox中设置了Puppet master / agent,并根据the README中的说明在master和agent上安装了netdev_stdlib

我已设置/etc/puppet/modules/netdev_stdlib的模块路径,其中也存在标准库stdlib

主节点为puppet.example.com,代理为node01.example.com

我的清单文件如下:

node default {
    file { "/tmp/example_ip": ensure  => present }

    include stdlib               #  No error on this line
    # include netdev_stdlib      #  Uncomment this line will cause error
    netdev_device { $hostname: }
}

但是,当我在客户端上运行puppet agent -t

  

错误:无法从远程服务器检索目录:SERVER上的错误400:   Puppet :: Parser :: AST ::资源失败,错误ArgumentError:无效   节点上的/etc/puppet/manifests/site.pp:17上的资源类型netdev_device   node01.example.com   警告:未在失败的目录上使用缓存   错误:无法检索目录;跳过运行

我尝试在清单文件include netdev_stdlib中使用site.pp,但Puppet找不到类netdev_stdlib。但是,include stdlib没问题。

2 个答案:

答案 0 :(得分:1)

  

我尝试在清单文件site.pp中使用include netdev_stdlib,但是Puppet找不到类netdev_stdlib,但是包含stdlib就没问题了。

netdev_stdlib模块没有提供可以简单包含的。它更像是一个编写新的Puppet类型的编程框架来管理Ruby中的网络设备。

您应该使用该模块编写自己的新网络设备模块,以便根据自述文件连接到某种新类型的设备,或者删除它并且不包括该类。

如果您正在尝试管理网络设备,则应查找支持该类型设备的现有模块 - 然后可以将此模块用作依赖项。如果您没有管理网络设备,我认为您不应该尝试使用该模块。

请注意,大多数模块README都会指出可以包含的类名;并非所有模块都包含Puppet类。

答案 1 :(得分:0)

在文件类型末尾错过{

从:改变:

file { "/tmp/example_ip": ensure => present,

file { "/tmp/example_ip": ensure => present, }