通过 Puppet 拉取 git-via-ssh 存储库:“无法创建存储库(路径上没有存储库)”

通过 Puppet 拉取 git-via-ssh 存储库:“无法创建存储库(路径上没有存储库)”

我正在尝试通过 Puppet 拉取 git (github) 仓库。我曾使用过官方 vcsrepo 文档并借用嘉年华邮报得出以下配置:

vcsrepo { "/tmp/":
  ensure => latest,
  provider => git,
  source => '[email protected]: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,要么是无法访问,所以我不知道哪个版本包含修复程序。(诚然,它说的是“待发布”)还有以下讨论,但它也链接到一个无效的错误 ID。

vcsrepo 文档中还有一个附言,上面写着“使用 require”和“参见 /examples/”,但是没有任何实质性的例子。。唉。

不管怎样,我尝试了“ensure bare”。不起作用(同样的错误)。请注意,“ensure bare”和“ensure latest”都没有在日志中给出正在运行的命令。我不知道这是否是个问题。

那么,答案是 git-via-ssh 不起作用吗?如何从 github 拉取私有仓库?exec如果可以避免的话,我不愿意使用它,但也许这就是答案。

如果答案是“改用 https”,那么对于 github 上经过身份验证的存储库,它如何工作?简单地说“您不能在当前版本的 vcsrepo 中使用 git-via-ssh”并不是一个充分的答案。

值得一提的是,我正在使用 2.7 版的 Puppet:

$ puppet --version
2.7.18

答案1

看起来问题在于你给了它一个路径"/tmp/"- 错误表明在应该是存储库(目录/tmp)的路径上已经存在某些东西,并且它因此而无法继续。

您是否打算克隆类似的东西"/tmp/reponame"

答案2

force您可以使用中的参数vcsrepo,它将删除所有内容并为您重新创建。

文档

相关内容