当我在机器(非守护程序)上运行 puppet 客户端时,我经常但随机地收到以下错误消息:
错误:无法创建:参数路径失败:文件路径必须是完全限定的 警告:不在失败的目录上使用缓存 警告:无法实例化配置:参数路径失败:文件路径必须是完全限定的
似乎很清楚这意味着什么——我在参数中没有完全限定的路径。但是,它并没有告诉我在哪里可以找到它来修复它,甚至没有告诉我哪个参数是错误的:(
(如果我使用调试选项,它始终可以工作,所以清单缓存似乎有问题......仍然可以摆脱它以供生产使用)
注意:我无法始终如一地做到这一点 :/
[在对配置进行了一段时间的刺激后回答自己的问题]
我已经设法将其追踪到我编写的模块之一(当然),但这是由于使用了一个没有达到我预期的变量。
发生的事情是:
..这基本上引起了使用变量的 File[] 的一些混淆。我现在已经用变量的显式值替换了这些,一切正常,但这有点令人惊讶!我假设我对范围以及何时可以定义/使用变量的理解与 Puppet 有点格格不入,所以我会更好地了解这一点......
它似乎导致了与在文件字符串上使用非完全限定路径相同的行为,因为找不到变量或没有获得值?反正很奇怪。
编辑:很有可能在范围内找不到变量,因此是空的,绝对不是完全限定的路径。没有解释为什么这不一致,但是......
当你测试你的 puppet 配置时,你可以通过运行
这将为您提供更详细的输出,并且应该向您显示失败的位置。如果你真的很绝望,你可以
--debug
继续获得更多的输出。如果你想去查看你的
.pp
文件,你应该搜索一个其中有一个缺失
/
(即它应该改为读取/path/to/file
)您可以将实际路径放在 path 属性中,然后它就可以工作了。这对我有用:
除非您使用
path
参数,否则应将完整路径放在键名中。例如:
或者:
如果您使用变量,请确保它已定义。如果它在不同的类中,请使用标准
$class::variable
语法。有关更多信息,请使用-vd
(verbose+debug) 参数运行 puppet。