应用单人木偶模块时如何设置path?

我试图像这样运行一个模块:

puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass' 

但是,我得到这种错误,表明path没有设置

 Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path. 

我不想在每个这样的位置明确地指定path,并且在作为完整的木偶运行的一部分运行时工作正常。 如何在运行单个模块时指定path?

Exec资源中的命令必须是完全限定的(即/usr/bin/test而不是test ),或者必须设置该Exec资源的path属性。

如果您可以修改Puppet清单,则可以简单地添加以下定义,以将所有Exec资源的默认path属性设置为/bin

 Exec { path => "/bin" } 

作为一个(或多或less)肮脏的解决方法,您也可以在命令行上设置任何Exec资源的默认path

 $ puppet apply --verbose -e 'Exec { path => "/bin" }' your_manifest.pp 

文档指针:

这..不应该作为一个完整的运行的一部分。 在unless命令中它需要一个完整的可执行文件path。 也许你已经在全局文件中设置了path,这是你全面运行的一部分?

尝试unless => '/usr/bin/[ -e "${logfile}" ]' ,而是。

我同意Shane的说法,默认path可能是在全局范围的清单中设置的。 你可以做同样的事情,但是你不能把它作为parameter passing,所以要么使用stdin:

 $ puppet apply -v --modulepath=moduleshere --noop <<EOF Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin" } include myclass EOF 

或者把Exec包含到example.pp ,然后使用puppet apply -v ... example.pp

您需要使用完全限定的path。

例如:

 exec { "sample": command => "/usr/bin/test", } 

要么:

 exec { "sample": path => ['/usr/bin', '/usr/sbin', '/bin'], command => "test", }