在Puppet 5.5.0中可以正常工作,但在Puppet 5.5.12中将不再起作用:
exec { 'example' :
command => "date",
cwd => "/fu",
onlyif => "ls /fu",
path => ['/usr/bin', '/usr/sbin', '/bin', ],
}
错误消息: 无法评估:工作目录/ fu不存在!
因此,现在,以某种方式使cwd得到评估,然后才使后者徒劳无功。知道从5.5.0到5.5.12的此次发行版中它来自哪里吗? 是否有错误或预期行为?到目前为止我什么都找不到。
感谢任何输入:)
答案 0 :(得分:2)
因此,现在cwd现在必须在 后者徒劳。这个次要发行版本的任何来源 从5.5.0到5.5.12?
这是Puppet问题PUP-9194,他们声称这是回归的解决方法。它是根据Puppet 6进行报告的,并记录在Puppet 6.0.2的发行说明中。票证上的注释线程报告该修复程序也已应用于Puppet 5代码库。 Puppet 5系列中似乎没有添加发行说明,但是Puppet 5.5.7的时机恰到好处。
是否存在错误或预期的行为?我不能 到目前为止找到任何东西。
显然,行为改变是故意的;这是被认为是越野车的旧行为。我在这里注意到,该结论似乎是基于历史惯例,而不是文档(因此,您所依赖的行为甚至与以前的行为都不同)。 onlyif
的文档指定了多个Exec
属性,这些属性同时适用于主要command
和onlyif
命令,而cwd
不在其中。
答案 1 :(得分:1)
我担心这是故意的行为。来自https://puppet.com/docs/puppet/5.5/types/exec.html#exec-attribute-cwd:
cwd
从中运行命令的目录。如果此目录不存在,该命令将失败。
您可以重新编码为这样吗?
exec { 'example' :
command => "cd /fu && date",
onlyif => "[ -d /fu ]",
path => ['/usr/bin', '/usr/sbin', '/bin', ],
}