Я пытаюсь вытащить репозиторий git (github) через Puppet. Я использовал официальная документация vcsrepo и заимствован из почта Fiesta придумать следующий конфиг:
vcsrepo { "/tmp/":
ensure => latest,
provider => git,
source => 'git@github.com:tedder/helloworld.git',
revision => 'master',
# eventually:
# revision => 'branchname'
require => [ Package["git"], Sshkey["github.com"] ],
identity => '/home/ubuntu/.ssh/id_rsa',
}
Проблема в том, что когда я запускаю это, я получаю следующий результат. Я вырезал большую часть журналов, связанных с Package и Sshkey, поскольку они кажутся нормальными:
$ sudo puppet apply --debug --verbose /etc/puppet/modules/github-deploy/manifests/init.pp
[snip lots of output]
debug: Puppet::Type::Package::ProviderApt: Executing '/usr/bin/dpkg-query -W --showformat '${Status} ${Package} ${Version}\n''
debug: Puppet::Type::Package::ProviderApt: Executing '/usr/bin/apt-cache policy git'
debug: Prefetching parsed resources for sshkey
notice: /Stage[main]/Github_deploy/Vcsrepo[/tmp/]/ensure: Creating repository from latest
err: /Stage[main]/Github_deploy/Vcsrepo[/tmp/]/ensure: change from absent to latest failed: Could not create repository (non-repository at path)
[snip some output]
Похоже, это то же самое, что и в эта ошибка, хотя запрос на вытягивание либо 404, либо недоступен, поэтому я не знаю, какая версия содержит исправление. (правда, там написано "ожидающий релиз"). следующее обсуждение, но он также ссылается на неверный идентификатор ошибки.
В документе vcsrepo также есть постскриптум, в котором говорится «использовать требовать» и «см. / Examples /», но нет никаких существенных примеров. Вздох.
Как бы то ни было, я вместо этого попробовал "гарантировать голый". Не работает (та же ошибка). Обратите внимание, что ни «гарантировать голый», ни «гарантировать последний» не дает команду, которая запускается в журналах. Не знаю, проблема ли в этом.
Итак, ответ, что git-via-ssh не работает? Как вытащить частное репо из github? Я не хочу использовать exec
если я могу этого избежать, но, может быть, это ответ.
Если ответ - «вместо этого используйте https», как это работает для репозиториев с аутентификацией на github? Просто сказать «вы не можете использовать git-via-ssh с текущей версией vcsrepo» не является достаточным ответом.
FWIW, я использую 2,7 марионетки:
$ puppet --version
2.7.18
Похоже, проблема в том, что вы даете ей путь "/tmp/"
- ошибка говорит о том, что что-то уже существует на пути, который должен быть репозиторием ( /tmp
каталог), и из-за этого он не будет продолжен.
Вы намеревались клонировать что-то вроде "/tmp/reponame"
вместо?
Вы можете использовать параметр force
в vcsrepo
, который удалит все и создаст заново.