是否有可能执行“除非”条款作为特定用户?

背景:

我正在升级我们的lxc傀儡模块以支持新兴的无特权LXC技术。

创build容器的代码将被执行,除非以下testing如果容器存在成功: lxc-info -n ${lxcname} >/dev/null 。 如果以root身份执行, lxc-info检查根容器中的名称。 如果由普通用户调用,它将检查为该特定用户存储的非特权容器的列表。

我想创build一个资源沿线(代码尚未testing):

 #Creation of the container ${name} exec { "lxc-create of ${hostname}": command => "lxc-create -t download -n ${name} -- -d ubuntu -r ${release} -a amd64", user => $user, group => $group, timeout => 0, unless => "lxc-info -n ${name}" #Should be executed as user ${user}, not root! } 

我可以解决这个问题,如果我改变最后一个参数

 unless => "su -l ${user} -c 'lxc-info -n ${name}'" 

但它看起来不够优雅。 是否有任何内置的木偶解决scheme作为其他用户进行检查?

正如Felix所说,除非使用与主命令相同的用户。

从文档 :

除非

…请注意,该命令遵循与主命令相同的规则

现在已经在文档中澄清了这一点: https : //github.com/puppetlabs/puppet/pull/3800/files