如何让vagrant / chef将本地git repo推送到服务器

时间:2014-01-14 03:08:36

标签: git chef vagrant

我有一个vagrant / chef / Berksfile配置(在https://github.com/jaycrossler/geoevents-chef-repo/blob/master/cookbooks/geoevents/attributes/default.rb#L5)设置为从签入的github仓库中提取代码。它工作得很好,每次我运行'vagrant provision'时,它都会将代码从github更新到VM中。

default['geoevents']['git_repo']['location'] = 'https://github.com/jaycrossler/geo-events.git'

如何指向厨师食谱而不是指向本地git实例,例如〜/ app / geo-events.git,这样当我进行本地更改时,我可以推送到VM进行测试?此外,这是最好的工作流程吗?

1 个答案:

答案 0 :(得分:3)

如果您将存储库复制到cookbook文件夹下面或向Vagrant添加其他synced folder,则可以访问主机上的代码。

较新版本的Chef(至少11.8,可能已经是11.6)已经重写了基于文件的整个提供程序,他们也应该接受file:///网址。如果您未添加其他同步文件夹,则可以通过file:///vagrant/geoevents-repo访问您的代码,vagrant位于指向您的cookbook文件夹的Vagrantfile同步文件夹下方,默认情况下已存在。现在,通过将JSON数据传递到config.vm.provision :chef_solo do |chef| chef.json = { :geoevents => { :git_repo => { :location => "file:///vagrant/geoevents-repo" } } } 中的厨师配置器,将其设置为新位置:

chef.json

如果添加其他同步文件夹,您当然必须调整网址。

编辑:当您写下它不能与roles/geoevents_local.rb一起使用时,请尝试以下主厨角色,例如在Vagrantfile中将其添加到您的运行列表中(在name "geoevents_local" override_attributes( "geoevents" => { "git_repo" => { "location" => "file:///vagrant/geoevents-repo" } } ) 中):

{{1}}