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 docには、「userequire」と「see/examples /」という追記もありますが、 実質的な例はありません 。はぁ。
その価値については、代わりに「裸を確保する」ことを試みました。動作しません(同じエラー)。 「ensurebare」も「ensurelatest」も、ログで実行されているコマンドを提供しないことに注意してください。それが問題かどうかはわかりません。
それで、git-via-sshが機能しないという答えはありますか? githubからプライベートリポジトリをプルするにはどうすればよいですか?回避できるのであればexec
を使用するのは嫌ですが、それが答えかもしれません。
答えが「代わりにhttpsを使用する」である場合、それはgithubの認証済みリポジトリに対してどのように機能しますか? 「現在のバージョンのvcsrepoではgit-via-sshを使用できない」と言うだけでは十分な答えではありません。
FWIW、2.7のパペットを使用しています:
$ puppet --version
2.7.18
問題は、"/tmp/"
のパスを指定していることです。エラーは、リポジトリ(/tmp
ディレクトリ)であるはずのパスに何かがすでに存在していることを示しています。そのため、続行できません。
代わりに"/tmp/reponame"
のようなものにクローンを作成するつもりでしたか?
force
のパラメータvcsrepo
を使用すると、すべてが削除されて再作成されます。