书评:Vagrant up and running

Mitchell Hashimoto的新书 "Vagrant up and running" 涵盖了Vagrant从基础用法到功能扩展的方方面面。

第一章中,Mitchell描述了"Vagrant之道"——一些高效使用Vagrant的提议。

他描述了开发者和运维工程师应如何从版本控制工具中签出项目,并通过执行"vagrant up"实现系统全面运作。

Vagrant还提供了简单回退功能"vagrant destroy"。这一功能保证环境的改变可恢复,一行"vagrant up"就能让你回到初始状态。

阐述过基本流程,Mitchell又将Vagrant与其他可选方案(如普通的桌面虚拟化技术、LXC等基于容器的方法以及直接部署在云端等)做了对比。

尽管可行,但比起Vagrant,这些方案在简单性和环境处理的统一性上都有所欠缺。自1.1版起,借助全新的插件系统,Vagrant甚至能够支持这些方案中的大多数。

Mitchell以安装指令为第一章作结。安装Vagrant 1.1时,你要确保移除之前尚未用RubyGems安装过Vagrant的任何版本,因为之前的安装可能带来安装程序的冲突。

第二章中,Mitchell带你上手第一台Vagrant机。他教你如何通过执行"vagrant init"创建新项目;以及连接到Vagrant机的最简单方法,"vagrant ssh"。

他简单介绍了Vagrantfile——一种在每个项目中都要创建的、用于配置Vagrant使用意愿的简单文本文件。

Vagrant机用所谓的"Box" ,类似虚拟机的基础映像。他介绍了box是什么以及项目间所能共享的大量磁盘映像,这使得你不必多次下载。

展示过Vagrant机如何启动,他又介绍了机器使用的基本方式,像ssh,基础网络以及共享文件夹。书中后半部分会就这些方面详细展开。

第三章是Vagrant虚拟机的设置技巧。为了更简单地销毁和新建虚拟机,你得有安装必备软件和完成系统配置的全自动化方案。

他演示了一种上手自动化配置的基础手段,演示中包括一些简单示例,示例用到了shell脚本,Chef 以及Puppet。

配置器使用是一个重要话题,而这一章只是抛砖引玉。Chef 以及Puppet被相关书籍宣称能够完全解决配置管理方面的问题。

第四章中,Mitchell介绍了Vagrant 所支持的各类可行网络模式。他深入探讨了端口转发,单机网络和桥接模式。

Mitchell对每种方案的优缺点进行比对,从而方便读者选择最适合的网络模式。这一章为第五章和多机集群奠定了基础。

Vagrant能用一行命令启动多台配置了相同Vagrantfile的机器。Mitchell讨论了如何控制多台机器:通过命名并将该名称后接在任何Vagrant指令末,可以命令Vagrant将该指令单独应用于某台机器。机器名缺省情况下,Vagrant指令将被用于集群内所有机器。

展示过多机集群的基本操控后,Mitchell向读者介绍了一些网络配置项。本章章末有一个MySQL使用的现实用例。

第六章更深入探索了Boxes的细节。Mitchell讨论了boxes背后的原理:boxes让你在配置时有一个更高的起点,而非每次都用"vagrant up"完成整个操作系统安装。

解释boxes原理之后,Mitchell向读者介绍了Box数据格式并向你展示了如何创建和打包 Boxes。最后介绍了如何为Boxes创建一个默认的Vagrantfile。

第七章是本书最有深度的话题:Vagrant的插件扩展。

Vagrant提供的插件系统能让你扩展功能、添加自定义指令或新配置项、设置自定义配置器,甚至变更现存Vagrant行为。Mitchell为每种情况配以相关示例用以展示着手开发Vagrant扩展的各类可能。这一章还涉及开发环境配置以及错误处理和验证。

Hashimoto的"Vagrant up and running" 带你上手Vagrant。书中介绍了掌握虚拟机必知的重要概念,还有如何自己动手扩展Vagrant的演示。

关于作者

Mitchell Hashimoto是一个热情洋溢的工程师,专业讲师,企业家。Mitchell为开源软件创建、编码了近十年。Mitchell在很多会议上都发表过相关工作的讲演,诸如VelocityConf, OSCON, FOSDEM等等。Mitchell是HashiCorp的创始人,这是一家以创建世界最佳DevOps工具(包括Vagrant在内)为目标的企业。创建HashiCorp之前,Mitchell当过五年的web开发者和四年的运维工程师。

英文链接:Book Review: Vagrant up and running

你可能感兴趣的:(书评:Vagrant up and running)