Я обновляю наш 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 какое-либо встроенное решение для проверки от имени другого пользователя?
Как сказал Феликс, if использует того же пользователя, что и основная команда.
Из документация:
если только
... Обратите внимание, что эта команда следует тем же правилам, что и основная команда
Теперь это разъяснено в документации: https://github.com/puppetlabs/puppet/pull/3800/files