应用单个人偶模块时如何设置路径?


12

我正在尝试运行这样的单个模块:

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

但是,出现这种错误,表明未设置路径

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

我不想在每个这样的位置显式指定路径,并且在作为完整木偶游戏的一部分运行时,它可以很好地工作。运行单个模块时如何指定路径?


1
您能否接受适当的答案?
kenorb 2015年

Answers:


15

Exec资源中的命令必须完全合格(即/usr/bin/test代替test),或者必须设置pathExec资源的属性。

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

Exec { path => "/bin" }

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

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

文档指针:


2

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

试试看unless => '/usr/bin/[ -e "${logfile}" ]',代替。


1

我同意Shane的观点,默认路径可能是在全局范围的清单中设置的。您可以执行相同的操作,但不能将其作为参数传递,因此请使用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


1

您需要使用完全限定的路径。

例如:

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

要么:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.