分享 Vagrant,虚拟机管理工具

Rei · 发布于 2013年11月01日 · 最后由 hick 回复于 2014年03月18日 · 14819 次阅读
1
本帖已被设为精华帖!

http://chloerei.com/2013/11/01/vagrant/

Vagrant 是个虚拟机管理工具,适合用来快速安装/重置虚拟机用来做开发环境,对于 Ruby 社区,适用于:

  • RVM 安装练习
  • 服务器部署练习
  • 给开发团队提供一致的开发环境
  • 写文章的时候用来搭建干净的测试环境
  • 其他需要虚拟机的场合

所以我写了一片文章来介绍 Vagrant,并且提供了 Nginx 和 Rails 两个例子,英文阅读没问题的同学可以看官方文档,并不长 http://www.vagrantup.com/

共收到 65 条回复
De6df3

用来练习或试水各种服务器架构非常方便!

1

相见恨晚。

5122

之前我的blog也写过两篇文章介绍vagrant,借Rei的帖子列出地址也给大家参考看看:

程序员的神兵利器-Vagrant http://yxfilm.us/blog/archives/2013/08/119

Vagrant+Chef 快速部署虚拟机环境 http://yxfilm.us/blog/archives/2013/08/124

1

#3楼 @apexy Chef 我还没啃得下来,总想着有没有更简单一点的工具。

2653

其实Vagrant的玩法还有很多,比如 http://ruby-china.org/topics/14395 ,可以用parallels替换掉VirtualBox;如果使用DigitalOcean或者AWS的话,可以直接通过API开一台服务器并自动把环境部署上,可以做到开发生产环境相同……

#4楼 @Rei Chef-solo还是不错的,但是发现如果单纯部署Rails的话,真心用不上……

1

#5楼 @chunlea 我现在打算就写个 shell 脚本好了,vagrant 和实机都能用上。

5173

#6楼 @Rei 还是puppet或chef靠谱的,找一个比较好一点的镜像,基本的都配置好了,guest addition稍微麻烦一点

818

gitlaphq 的开发环境用的也是这些, 看这个项目: https://github.com/gitlabhq/gitlab-vagrant-vm

PS. 可以看看 http://www.ansibleworks.com, 跟 puppet 和 chef 类似的东西.

96

B大没进来怒喷,什么年代了还不去用docker

F7b32c

目前在用mina + vagrant,真心方便

2913

会用Vagrant,但不知道除了玩,还能怎么用? 它和直接在本机构建开发环境相比有什么优势, 另外和团队怎么一起使用Vagrant?

F7b32c

#11楼 @zealinux 用处不少 1、利用vagrant搭建跟服务器一样Linux环境,可以让开发环境和部署环境(如Mac开发、Linux上部署)差异问题提前暴露,避免部署时才发现这些问题。 2、利用vagrant搭建干净的环境,进行单元测试、集成测试 3、可以搭建一些环境,避免把本机弄得乱七八遭和臃肿。比如:我最近在看一个新的前端框架,并打算利用这个框架给自己的wordpress做一个theme,但是一是ubuntu搭建wordpress(php+mysql+nginx)环境很方便,二是我非常熟悉在ubuntu下完成搭建工作,三是这个theme写完我很可能很久都不写php代码,所以不想在本地搭建 4、vagrant的共享功能非常方便(我用的virtualbox有这个功能,不清楚其它的vm系统是否有这个功能),在宿主机上使用textmate/sublime之类的修改文件,不用ftp之类再传到客机上。端口转发也是,调试的时候也非常方便。

1

#11楼 @zealinux 例如一直用着 rvm,想试试 rbenv,又不破坏自己现有的开发环境,就开个虚拟机。

和团队就是把 Vagrantfile 跟项目一起放进版本控制里面,新人加入就 vagrant up 就搭好环境了。

1462

#12楼 @leopku 跟直接用virtualbox搭建linux虚拟机有什么区别呢?搭建的虚拟机有图形窗口还是用命令行登陆进去?

1

#14楼 @gaicitadie 用 Vagrant 管理可以把虚拟机配置写成文件,要用什么镜像,指定初始安装脚本,每个项目独立一个虚拟机。直接用 Virtualbox 就是手工操作了,没那么方便。

默认关闭 GUI,也可以配置打开。

F7b32c

其实没啥区别,你可以打开virtualbox看看,你建的box都在 不过vagrant通过一些配置文件和命令行,让你管理起来更方便、快捷 比如写代码、测试的时候,不用在宿主机、客机两者中来回切换

96

好有意思的样子,mark一下

7550

快速部署了一个 GITLAB 的 VM ( https://github.com/gitlabhq/gitlab-vagrant-vm ), 给公司做 DEMO 时用的, 用 Vagrant 的每一次都感慨自动化的强大. ✨

96

又学到一招,谢谢分享

487

好工具。

F7b32c

#14楼 @gaicitadie 跟virtualbox不同的是,创建、启动、休眠、关闭、ssh管理虚拟机等一系列动作都通过命令行完成

3406

《Deploying Rails》这本书挺好的,从vagrant到puppet到capistrano等等等...

8326

Parallels Desktop 9

5130

Vagrant 管理 Ubuntu , 有时候会卡在 Ubuntu 的引导界面, 这个时候如果有界面显示按下 Enter 就行了 , 但是 Vagrant 就没办法了 ... 不知道小伙伴们是如何解决这问题的 .


我们在生产环境中使用过 , 由于主机负载过高可能会重启 , 那么 Vagrant 管理的虚拟机就会异常关机 , Ubuntu 再次开机时就会停留在 引导菜单的位置, 等待用户确认 ... 所以就进不去系统了 .... 后来我就再也没有在生产环境用过 Vagrant ...


我觉得这货主要优势在于使用统一的 CLI 接口管理不同的虚拟机 , 方便配置 .

1

#24楼 @song940 用 vagrant 提供的 box 没卡过,把 GUI 打开用这段配置

config.vm.provider :virtualbox do |vb|
  # Don't boot with headless mode
  vb.gui = true
end
F7b32c

#24楼 @song940 @Rei 用ubuntu官方下载的box也没卡过

1

#26楼 @leopku 哎呀,原来还有官方的。

F7b32c

#27楼 @Rei 😄 不用自己做box了,32位、64位按自己需要下载即可 速度还不错,vagrantbox.es的上好多链接是死链或速度很慢。

728

恩,我也是用这个,确实不错

Chef 也不会用,感觉比较复杂,就懒的去看了……

5130

#25楼 @Rei 服务器 , 没有 X , 以前都是费半天劲拷贝出来 , 修好放进去 .... (很傻 ...) #26楼 @leopku 官方的没有启动时的菜单选项么 ?

F7b32c

#30楼 @song940 没有启动菜单选择(或者有你也看不见) 你就把它想像成一个远程的服务器,启动的过程你是看不到的(除非服务器装了远程卡,扯远了) 启动完了后,你通过ssh去管理它

32楼 已删除
7614

#22楼 @KoALa 有电子书没?

5219

试过四五次,感觉很不好用,经常挂掉。 连不上网、搭好的rails环境丢失等各种莫名其妙的错误,不知道是不是因为在windows下使用的原因,基本放弃使用了.... 还是用重量级的vmware...

1

#35楼 @freshlhy vagrant 可以配置使用 vmware,不过我没用过。

5219

#36楼 @Rei 我试试, 看能不能淘汰vmware虚拟mac。拿hiredis没法啊~

1

#37楼 @freshlhy 虚拟 Mac 消耗很大吧,我只用来测试 safari 的时候用。最好是虚拟服务器环境。

5219

#38楼 @Rei 8g内存+固态硬盘 毫无鸭梨啊~

5219

#38楼 @Rei 好像没有免费的vagrant+vmware方案啊 介绍:http://puppetlabs.com/blog/new-vmware-provider-gives-vagrant-a-boost 官方的http://www.vagrantup.com/vmware ....license要79刀 汗

1

#40楼 @freshlhy 是啊,还是用 vbox 吧。之前我也遇到过 vbox 网络不正常,后来发现是版本旧了,升到最新就没事了。

5219

#41楼 @Rei 好吧 我再试一次 是在windows下吗?

1

#42楼 @freshlhy 我主机是 Linux,Vagrant 值得一试的。

96

我们正在试用,由@icyleaf同学负责

96

+1 以前一直没深入了解,看来很值得花时间看看

3454

请教各位一个问题,vagrant的box会包含一个完整的linux os,使用vagrant的init、up等操作之后,如果要配置rails开发环境,还是需要安装、下载一大堆文件,速度很慢,有没有办法将这个过程保存下来,以后创建新的rails开发环境的实例,能不能直接继承这个已经创建好的实例? 另外,rei的文章里,可以使用脚本将软件安装自动化,但还是需要下载啊,国外的服务器速度真的很慢。

3454

请教另外一个问题,如果vagrant软件安装必须重新下载文件的话,virtualbox能不能设置代理,例如使用goagent的代理?

96

#9楼 @anklos 敝 ex-公司之前搞 Docker 的时候,一不小心把网关 IP 给抢了,造成大面积断网。。。

96

#46楼 @xwf286 你可以自定义一个 box 嘛。其实我现在都 virt-install 自动安装一个 Debian 系统,然后自动安装需要的包,再 qemu-img convert -c 压缩一下,以后的系统就直接从这个镜像起了。。。

1

#46楼 @xwf286 可以将设置代理的过程写成脚本。

3454

#49楼 @RainFlying 虽然没有傻瓜操作的方法,但这也是一种可选的方法,谢谢!

3454

#50楼 @Rei 也不错。希望在半个小时内搞定像ruby_china这样的环境,谢谢!

1

#51楼 @xwf286 我想了想网络问题还是交给 host 处理更好,比如开 vpn。

5219

#53楼 @Rei 运行正常了 在windows下用subl 在ubuntu下运行 很爽~

648

好久前就觉得是个好东西,方便不少,特别是折腾系统时

56楼 已删除
96

我开发了一个vmc和vmd,用go写的,已经push到github上了

96

感兴趣可以克隆下来一起探讨

96

鉴于网络问题,chef的cookbook跑的时候一直卡住了,结果手动终止。还有就是box_url可以写本地box的相对路径,网络不好的同学可以用迅雷离线把box先下载下来!

96

#46楼 @xwf286

继承这个已经创建好的实例

我想你這個意思指的應該就是 vagrant package -h 的功能吧? http://docs.vagrantup.com/v2/cli/package.html 把建立到某種程度狀態的 vagrant vm 壓成可以重複使用的 box

另外在執行 package 壓成 box 之前可以先參照這篇文章的說明壓縮出更小 size 的 box http://techblog.torchbox.com/post/31984022435/compressing-vagrant-boxes

4584

看到这篇文章后,想起了Docker,于是又Google了一翻。 Should I use Vagrant or Docker.io for creating an isolated envinronment? http://stackoverflow.com/questions/16647069/should-i-use-vagrant-or-docker-io-for-creating-an-isolated-envinronment

3454

#60楼 @v1nc3ntlaw 就是package这个功能,打包后,可以重用了。

3760

#28楼 @leopku 给个官方的链接呗?

96

没看明白这和直接用VM、Parallels等虚拟机有什么区别?

7822

#62楼 @xwf286 有实际经验没? 发现从磁盘大的pc上 package 的 box , 移到磁盘小的笔记本上, 会导致磁盘写满的错误

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册