Ssh

通過 Puppet 拉 git-via-ssh 儲存庫:“無法創建儲存庫(路徑上的非儲存庫)”

  • February 14, 2015

我正在嘗試通過 Puppet 拉一個 git (github) repo。我使用了官方的 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 或無法訪問,所以我不知道哪個版本包含修復。(誠然,它說“待發布”)還有以下討論,但它也連結到無效的錯誤 ID。

vcsrepo 文件上還有一個附言,上面寫著“use require”和“see /examples/”,但沒有任何實質性的例子。嘆。

為了它的價值,我嘗試了“確保裸露”。不起作用(同樣的錯誤)。請注意,“確保裸露”或“確保最新”都不會給出日誌中正在執行的命令。我不知道這是否有問題。

那麼,是 git-via-ssh 不起作用的答案嗎?如何從 github 拉取私有倉庫?exec如果我可以避免它,我不願意使用它,但也許這就是答案。

如果答案是“改用 https”,那麼這對 github 上經過身份驗證的儲存庫有何作用?簡單地說“你不能在目前版本的 vcsrepo 中使用 git-via-ssh”是不夠的。

FWIW,我正在使用 2.7 的木偶:

$ puppet --version
2.7.18

看起來問題是你給它一個路徑"/tmp/"- 錯誤是說在應該是儲存庫(/tmp目錄)的路徑中已經存在某些東西,並且因此它不會繼續。

您是否打算複製到類似的東西"/tmp/reponame"

您可以使用forcein參數vcsrepo,它將刪除所有內容並為您重新創建它。

文件

引用自:https://serverfault.com/questions/466519