是否可以以特定用户身份执行“unless”子句?

是否可以以特定用户身份执行“unless”子句?

背景:

我正在升级我们的lxcpuppet 模块以支持新兴的非特权 LXC 技术。

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

我想创建一个类似的资源(代码尚未测试):

#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}'"

但它看起来不太优雅。Puppet 中是否有任何内置解决方案可以以其他用户身份进行检查?

答案1

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

文档

除非

...请注意,此命令遵循与主命令相同的规则

文档中已经对此进行了澄清:https://github.com/puppetlabs/puppet/pull/3800/files

相关内容