Действительно ли возможно выполниться «если» пункт как определенный пользователь?

Фон:

Я обновляю наш lxc марионеточный модуль для поддержки появляющейся непривилегированной технологии LXC.

Код, который создает контейнер, выполнен, если следующий тест, если контейнер существует, не успешно выполняется: lxc-info -n ${lxcname} >/dev/null. Если выполняется как корень, 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}'"

но это просто не выглядит изящным. Есть ли какое-либо встроенное решение в марионетке осуществить проверку как другого пользователя?

2
задан 17 December 2014 в 12:11
1 ответ

Как сказал Феликс, if использует того же пользователя в качестве основной команды.

Из документация :

если только

... Обратите внимание, что эта команда следует тем же правилам, что и основная команда

. Теперь это разъяснено в документации: https://github.com/puppetlabs/puppet/pull/3800/files

2
ответ дан 3 December 2019 в 11:40

Теги

Похожие вопросы