модуль марионетки vcsrepo, не используя пользовательский параметр для подвижного

У меня есть сервер, который полагается на марионеточный vcsrepo для обновления кода в локальном подвижном репозитории на основе тега.

Когда я изменяю необходимый тег, с помощью vcsrepo параметра "пересмотра", vcsrepo должен сделать получение по запросу hg и обновление hg на repo.

Это все хорошо работает.

Однако я создал клон этого сервера для тестирования чего-то еще, и теперь когда я выполняю марионеточное обновление, я получаю ошибку:

Not trusting file /var/hg/repo/.hg/hgrc from untrusted user *user*, group *group*

Это происходит, потому что марионетка работает как корень, в то время как hgrc файл принадлежит пользователю

Пользовательский параметр в vcsrepo, как предполагается, имеет дело с этим:

vcsrepo { '/var/hg/repo':
    ensure   => present,
    provider => hg,
    source   =>       'ssh://****',
    user => 'user',
    owner => 'user',
    group => 'group',
    revision => '1.12'
  }

т.е.

команды hg, как предполагается, работают как пользователь так, чтобы Доверительное требование в подвижном было удовлетворено.

Но не работа. Сервер клона немного для разрядной копии оригинала.

1
задан 3 September 2015 в 16:35
1 ответ

Я понял это.

Puppet работает от имени пользователя root. Это означает, что для vcsrepo, использующего mercurial, пользователь root должен доверять пользователю, которому принадлежит файл .hgrc в обновляемом репо.

Чтобы установить это доверие, вы добавляете

[trusted]
user = 'user'

в /root/.hgrc

Когда выполняется mercurial, он ищет доверительные отношения в $ HOME / .hgrc.

На моем существующем сервере марионеточный агент выполнялся с помощью cron, поэтому cron видел бы $ HOME как /root/.hgrc

На клонированном сервере я запускал обновление марионетки в интерактивном режиме, открыв корневую оболочку с помощью

sudo bash

. Однако это сохраняет мою переменную $ HOME с тем же значением, что и у моего первоначального пользователя, поэтому mercurial не смог найти требуемую достоверную информацию в / root / .hgrc

Когда я установил корневую оболочку с

sudo -i

, была установлена ​​правильная переменная $ HOME и работало обновление марионетки.

Параметр «пользователь» в vcsrepo относится к пользователю, который используется для аутентификации в ртутном удаленный сервер, а не пользователь, который запускает процесс на локальном сервере.

1
ответ дан 4 December 2019 в 00:01

Теги

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