背景:
我正在升级我们的lxc
puppet 模块以支持新兴的非特权 LXC 技术。
除非容器存在的以下测试成功,否则将执行创建容器的代码lxc-info -n ${lxcname} >/dev/null
:如果以 root 身份执行,则lxc-info
检查根容器中的名称。如果由普通用户调用,它会检查为该特定用户存储的非特权容器列表。
我想创建一个资源(代码尚未测试):
#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 中是否有任何内置解决方案可以像其他用户一样进行检查?
正如菲利克斯所说,除非使用与主命令相同的用户。
从文档中:
现在已经在文档中澄清了这一点:https ://github.com/puppetlabs/puppet/pull/3800/files