我正在尝试通过 Puppet 提取一个 git (github) repo。我使用了官方 vcsrepo 文档并从Fiesta 帖子中借用了以下配置:
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 文档上还有一个附言,上面写着“使用要求”和“请参阅/示例/”,但没有任何实质性示例。叹。
对于它的价值,我尝试了“确保裸露”。不起作用(同样的错误)。请注意,“ensure bare”或“ensure latest”都不会给出日志中正在运行的命令。我不知道这是否是一个问题。
那么,答案是 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
它将删除所有内容并为您重新创建。文档