我已经使用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
没问题。
答案 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, }