我希望使用Vagrant配置和配置来完全配置ruby unix开发环境。理想情况下,它会引用一个简单的基本框(例如,精确32),并通过这样的方式构建环境,以便其他团队成员可以轻松地重复,可以发布到github,并且可以升级为新版本的只需更改配置即可使用不同的技术。虽然[Rails Dev Box] [1]有一些有用的想法,但我还没有找到任何完整的搜索网页示例。大多数开发环境示例(如Rails Dev Box)都没有设置guest dev环境,因为他们假设dev将使用共享文件策略在主机上完成 - 或者如果他们手动完成配置然后保存框而不是而不是供应它。
这也需要在代理后面以及没有代理的情况下工作。
以下是我认为需要采取的步骤:
在主持人身上:
在访客上,通过Vagrantfile / provisioning:
使用基础unix框(例如,精确32)
可选地设置代理变量(如果安装了proxyconf插件并且设置了http_proxy env var)
理想情况下,我可以将其推送到github,它可以被克隆,然后cd
到新的directoy,vagrant up
有一个完全配置的开发环境......
有没有人有这样做的例子?
答案 0 :(得分:1)
我喜欢做这样的任务就是使用puppet作为Vagrantfile中的配置步骤。
有了这样的东西,你可以通过在shell配置器中执行所有步骤来快速和脏地将所有东西放在一起......但我更喜欢木偶和模块方法,因为我发现它更容易维护,扩展并与团队分享。
我已经尝试过几种不同的方法,如你所提到的那样使用Ruby和rvm进行配置;
由maestrodev创建的rvm puppet模块允许您配置许多rvms核心功能:ruby版本,gemsets,gems和rvm包装器。通常,为了管理项目中包含哪些木偶模块,我使用了librarian-puppet gem,它允许您使用Puppetfile来指定模块和所需的版本,就像bundler一样。它处理依赖项,例如stdlib和concat模块。此方案需要在配置之前配置外部Internet访问,以便能够下载ruby和rubygems。
rvm的离线安装 - 我使用共享文件夹使流浪者机器可以访问相关文件(rvm本身,ruby和rubygems),并将offline rvm instructions变成一个(不是很好)的木偶模块并使用了那个。这里要注意的一个特别问题是安装的ruby源的命名;扩展必须是.tar.bz2,它在列表中描述。
此外,对于您的其他配置步骤,您可以自己构建puppet模块以满足您的额外要求:vim / tmux等,并在git中单独保留此版本。仅使用'puppet trifecta':
的模块就可以获得相当远的距离class vim {
package { 'vim':
ensure => installed,
}
file { '.vimrc':
ensure => file,
...
}
}
另外,查看the puppet forge可能已编写的模块,以执行您想要的操作。
因此,您可以查看以下内容的示例:
/ 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任务来使用librarian-puppet从git / puppet forge中获取puppet依赖项,以及在流浪之前你可能需要做的任何其他步骤。通过这种方式,您可以检查代码作为配置。
最后,对于puppet,您可以使用facter和hiera工具,这些工具对于保存模块中的数据非常有用,值得在初始设置工作后将其作为重构方法。< / p>