我试图像这样运行一个模块:
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", }