使用vagrant完全配置ruby开发环境
我希望有一个完全配置的ruby unix开发环境,使用Vagrant配置和资源调配。理想情况下,它将引用一个简单的基本框(例如precise32),并通过资源调配来构建环境,这样它将很容易为其他团队成员重复,可以发布到github,并且可以通过更改资源调配来升级不同技术的新版本。虽然[Rails Dev Box][1]有一些有用的想法,但我还没有在web上找到这方面的完整示例。大多数开发环境示例(如Rails-dev-Box)都没有设置来宾开发环境,因为它们假设将使用共享文件策略在主机上进行开发,或者假设手动进行配置,然后保存该框而不是进行配置 这也需要在有代理的情况下以及没有代理的情况下工作 以下是我认为需要采取的步骤: 在主机上:使用vagrant完全配置ruby开发环境,vagrant,Vagrant,我希望有一个完全配置的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
cd
到新的directoy,然后vagrant up
以拥有一个完全配置的开发环境
有人有这样做的例子吗?我喜欢这样做,在你的文件中使用puppet作为配置步骤 有了这样的东西,只要在shell provisioner中执行所有步骤,您就可以快速地将一些东西组合在一起。。。但我更喜欢木偶和模块方法,因为我发现它更易于维护、扩展和与团队共享 正如您所提到的,我已经尝试了使用Ruby和rvm进行资源调配的几种不同方法
/ 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