【问题标题】:How to have vagrant/chef push a local git repo to a server如何让 vagrant/chef 将本地 git repo 推送到服务器
【发布时间】:2014-02-02 00:45:53
【问题描述】:

我有一个 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'

如何将 chef recipe 指向本地 git 实例,例如 ~/app/geo-events.git,以便在进行本地更改时,可以推送到 VM 进行测试?另外,这是最好的工作流程吗?

【问题讨论】:

    标签: git chef-infra vagrant


    【解决方案1】:

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

    新版本的 Chef(至少 11.8,可能已经 11.6)重写了整个基于文件的提供程序,并且它们还应该接受 file:/// url。如果您没有添加额外的同步文件夹,您可以通过file:///vagrant/geoevents-repo 访问您的代码,该文件夹位于指向您的说明书文件夹的vagrant 同步文件夹下方,默认情况下存在。现在必须通过将 JSON 数据传递给 Vagrantfile 中的主厨供应商来将其设置为新位置:

    config.vm.provision :chef_solo do |chef|
      chef.json = {
        :geoevents => {
          :git_repo => {
            :location => "file:///vagrant/geoevents-repo"
          }
        }
      }
    

    如果您添加一个额外的同步文件夹,您当然必须调整 URL。

    编辑:当您写到它不适用于chef.json 时,请尝试以下厨师角色,例如在roles/geoevents_local.rb 中并将其添加到您的运行列表中(在Vagrantfile 中):

    name "geoevents_local"
    
    override_attributes(
      "geoevents" => {
        "git_repo" => {
          "location" => "file:///vagrant/geoevents-repo"
        }
      }
    )
    

    【讨论】:

    • 谢谢 - 我尝试了这种方法,但它只对我部分有效。我设置了 [config.vm.synced_folder "../geoevents", "/vagrant/geoevents-repo"],效果很好(谢谢!),但是当我做了你推荐的 chef.json 片段时,它仍然指向在线回购。如果我 ssh 进入并创建一个指向该新目录的 simlink,或者直接将该位置放在配方中,事情确实有效......但 Vagrantfile 设置似乎没有覆盖 attributes/default.rb 中的那个
    • 这很奇怪。我希望它会覆盖,否则不会有太大意义。你能创建一个覆盖此属性的厨师role 吗?。
    • 您是否在设置共享文件夹后“重新加载”了实例? Vagrant 仅在启动时添加共享。
    • 他写道,同步文件夹对他有用。但是您真的重新加载了 VM 配置它吗?较新版本的 Vagrant (IIRC 1.3+) 不再在重新加载时自动配置。这可能就是为什么 repo 仍然指向旧位置的原因(不查找,我什至不确定 git 资源是否会更改源,如果 ref 已经匹配,那么最好也删除旧的 repo虚拟机)。
    • 是的,我重建了整个服务器进行测试。 '流浪毁灭','流浪起来','流浪供应'。我现在正在阅读角色文档,看起来是最好的解决方案。会让您知道 - 感谢您的所有指导。
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多