我有一个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进行测试?此外,这是最好的工作流程吗?
答案 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}}