使用vagrant完全配置ruby开发环境

使用vagrant完全配置ruby开发环境,vagrant,Vagrant,我希望有一个完全配置的ruby unix开发环境,使用Vagrant配置和资源调配。理想情况下,它将引用一个简单的基本框(例如precise32),并通过资源调配来构建环境,这样它将很容易为其他团队成员重复,可以发布到github,并且可以通过更改资源调配来升级不同技术的新版本。虽然[Rails Dev Box][1]有一些有用的想法,但我还没有在web上找到这方面的完整示例。大多数开发环境示例(如Rails-dev-Box)都没有设置来宾开发环境,因为它们假设将使用共享文件策略在主机上进行开发

我希望有一个完全配置的ruby unix开发环境,使用Vagrant配置和资源调配。理想情况下,它将引用一个简单的基本框(例如precise32),并通过资源调配来构建环境,这样它将很容易为其他团队成员重复,可以发布到github,并且可以通过更改资源调配来升级不同技术的新版本。虽然[Rails Dev Box][1]有一些有用的想法,但我还没有在web上找到这方面的完整示例。大多数开发环境示例(如Rails-dev-Box)都没有设置来宾开发环境,因为它们假设将使用共享文件策略在主机上进行开发,或者假设手动进行配置,然后保存该框而不是进行配置

这也需要在有代理的情况下以及没有代理的情况下工作

以下是我认为需要采取的步骤:

在主机上:

  • 安装virtualbox、vagrant、vagrant proxyconf
在客户机上,通过文件/资源调配:

  • 使用基本unix框(例如precise32)

  • 可选设置代理变量(如果安装了proxyconf插件并设置了http_proxy env var)

  • 提供其他一切(木偶、厨师或贝壳脚本)
    • 安装各种unix工具(apt get install git等)
    • 设置bash环境
    • 设置vim环境(病原体插件、ruby插件等)
    • 安装rvm
    • 安装ruby 1.9、2.0、JRuby和Rubinius
    • 安装和配置tmux
理想情况下,我可以将其推入github,将其克隆,然后
cd
到新的directoy,然后
vagrant up
以拥有一个完全配置的开发环境


有人有这样做的例子吗?

我喜欢这样做,在你的文件中使用puppet作为配置步骤

有了这样的东西,只要在shell provisioner中执行所有步骤,您就可以快速地将一些东西组合在一起。。。但我更喜欢木偶和模块方法,因为我发现它更易于维护、扩展和与团队共享

正如您所提到的,我已经尝试了使用Ruby和rvm进行资源调配的几种不同方法

  • rvm puppet模块允许您配置许多rvms核心功能:ruby版本、Gemset、gems和rvm包装器。通常,为了管理项目中包含哪些puppet模块,我使用Library puppet gem,它允许您使用Puppetfile来指定模块和所需的版本,就像bundler一样。这将处理诸如stdlib和concat模块之类的依赖项。此场景要求在配置之前配置外部internet访问,以便能够下载ruby和rubygems

  • rvm的离线安装-我使用一个共享文件夹使相关文件(rvm本身、ruby和rubygems)可供vagrant机器访问,并将其转换为一个(不是很好的)傀儡模块并使用它。这里要特别注意的一个问题是安装的ruby源代码的命名;扩展名必须是.tar.bz2,它在列表中有描述

  • 此外,对于其他配置步骤,您可以自己构建puppet模块以满足其他需求:vim/tmux等,并在git中单独控制此版本。使用模块,您只需使用以下功能即可取得相当大的成功:

    另外,还可以查看那些可能已经被编写来完成您想要的任务的模块

    下面是一个你可以登记的例子:

    / Puppetfile
    / README.md
    / Vagrantfile
    / puppet 
      /manifests
        site.pp
    
    那个流浪的供给者会

    Vagrant.configure("2") do |config|
      config.vm.provision "puppet" do |puppet|
        puppet.manifests_path = "puppet/manifests"
        puppet.module_path    = "puppet/modules"
        puppet.manifest_file  = "site.pp"
      end
    end
    
    我以前使用过rake任务,使用Library puppet从git/puppet forge中提取木偶依赖项,以及在漫游之前可能需要执行的任何其他步骤。这样,代码作为配置就是您签入的全部内容


    最后,使用puppet,您可以使用facter和工具,这对于将数据排除在模块之外非常有用,并且在初始设置正常运行后,作为一种重构手段值得一看。

    这看起来正是我正在寻找的方法,我会尽快试一试…木偶做这种事比厨师好吗?对我来说,我更熟悉木偶;我可以更快地完成它,到目前为止,它已经很好地满足了我的需求。我还没和厨师试过很多。在配置管理领域,还有Ansible和Salt,它们都与Vagrant provisioning集成。我最近读到了这个答案,有一项服务,[Rove][,这看起来很有希望。您选择了我上面介绍的大部分功能,它将为您生成一个Vagrantfile和一个Cheffile,并将其复制到您的目标目录。要使用该Cheffile,您必须安装Library chef gem,然后在该目录下运行Library chef,以将您需要的食谱复制到烹饪书中然后,从概念上讲,您可以运行
    vagrant up
    ,并立即配置并运行vm。不幸的是,到目前为止,我在Windows上的这一点(错误配置)一直不成功。另一个类似的Rove服务(基于Puppet而非Chef)是,“一个为Web开发设置虚拟机的简单GUI。”它看起来很棒,但似乎还不支持Ruby(目前只有PHP和HHVM)。另一个看起来很有希望的开发环境创建者是[Fig][它利用Docker来创建开发环境。Fig是Docker收购的,所以在不久的将来可能会有好的事情发生。
    Vagrant.configure("2") do |config|
      config.vm.provision "puppet" do |puppet|
        puppet.manifests_path = "puppet/manifests"
        puppet.module_path    = "puppet/modules"
        puppet.manifest_file  = "site.pp"
      end
    end