8

vagrant を使用して、まだ複製されていない場合に 2 つのリポジトリを自動的に複製する開発環境をセットアップしようとしています。

パペットに git コマンドを直接実行させるために多くの方法で失敗した後、リポジトリを複製するための簡単なスクリプトを作成しました。どういうわけか、この方法は誰にでもできると思っていましたが、思ったよりも私はばかでした。

exec {"load-repos":
    command =>"/bin/bash /vagrant/manifests/modules/scripts/clone_repos.sh",
    require => Package["git-core"],
  }

スクリプトは次のとおりです。

#!/bin/bash
if [ ! -d /vagrant/repo-one-dest ]; then
  git clone git@example.com:/repo-one.git /vagrant/repo-one-dest
fi

if [ ! -d /vagrant/repo-two-dest ]; then
  git clone git@example.com:/repo-two.git /vagrant/repo-two-dest
fi

exit

秘密鍵は適切に設定されています。vm にログインして手動で実行するbash clone_repos.shと、すべてが機能します。何度 vagrant をリロードして puppet に任せても、exec を介してリポジトリが読み込まれることはありません。私は何が欠けていますか?

4

1 に答える 1

4

これはおそらく、vagrant ssh通常はユーザーとしてログインしているためですvagrant(デフォルトでは、これは構成によって変更できます)。vagrant私が推測しているユーザーは、キーを適切にセットアップしています。

ただし、Vagrant がプロビジョナー (この場合は Puppet) をsudo実行すると、root ユーザーとして実行されます。

デプロイを行うためにキーを設定することを一般的に推奨する方法は、キーをどこかに置き、GIT_SSHラッパーを使用して適切に複製するか、SSH エージェントを使用することです。

于 2012-07-26T17:52:51.780 に答える