2010-06-24 126 views
0

我已创建的本地计算机上项目的克隆与混帐克隆问题

git clone [email protected]:test/abc.git 

现在我想我的Ubuntu服务器上部署我的项目。

所以我创建了一个脚本,在我的Ubuntu服务器上安装git。 现在我想在服务器上部署我的rails项目。 像git clone [email protected]:test/abc.git但我没有在我的服务器上设置ssh密钥。 有没有什么办法可以创建克隆,而无需在我的服务器上设置ssh密钥。

我们必须创建ssh每个服务器上的每个ssh的强制性?

如果我有20台服务器,该怎么办?我需要为每个要克隆的服务器设置ssh密钥?

有没有什么办法只是问密码比它会创建一个克隆?

或者其他方式?

+0

为什么你需要做一个克隆部署?为什么不只是为你的20台服务器创建一个适当版本的ftp的tarball? – 2010-06-24 21:31:45

回答

2

您可以使用只读版本。在您的存储库名称旁边,您可以选择http协议。这个URL可以使用没有SSH密钥。如果它是私人存储库,则需要将您的用户名添加到网址中。

$ git clone http://[email protected]:test/abc.git 
Initialized empty Git repository in /Users/myname/Projects/abc/.git/ 
password: 

然后你输入你的密码,稍后你有你的克隆。缺点是如果您使用私人回购,则需要输入密码。

虽然我看不到添加几个ssh密钥的问题。如果您确实需要部署到20台服务器,您可能会考虑使用具有良好操作系统支持的打包方法进行自动更新。

+0

你能举个例子吗? – 2010-06-24 21:54:40

+0

我用一个例子更新了答案。 – 2010-06-25 05:38:02

1

尝试使用配置管理工具来部署安装是个错误。你真的打算更新这20个系统中的每一个的代码吗?那么为什么你授予他们写入代码的权限?

创建一个压缩包或使用任何软件包管理系统在您正在开发中的语言版本(例如Perl中,你可以使用Dist::ZillaModule::InstallExtUtils::MakeMake R)。

0

我们创建了一个用于更新我们的200多台机器的RPM脚本(并使用Alien也构建了DEB)。由于像“http://repo/fetch/rpm/”这样的url被调用,检查脚本是否在package_name存储库中插入了新的git标签,如果是这样,请使用我们在每个repo基础上创建的RPM模板(通常放入.build/rpm.spec)构建RPM,将其保存到本地缓存目录,并将内容作为文件头读出。

我意识到你的应用程序不会工作,因为你使用GitHub - 但它只是一个想法,为那些谁拥有自己的远程存储库。盒子上的cron将每天查询这些URL并在输出中运行rpm -Uvh。

为了您的实例,可能是明智的压缩包每个版本,要么把在公共访问的URL或创建一个脚本,它Rsync在每个服务器+ EXEC