简书不维护了,欢迎关注我的知乎:波罗学的个人主页
两行命令即可创建Linux并不是天方夜谭。借助Vagrant完全可以实现这个目标。
无论开发运维还是测试,常会因某些需求而搭建用于开发测试的Linux环境。通常可通过如下几种获取
- 公司物理机Linux系统,快速获取但不够灵活,无法选择系统版本,多人共用
- 购买服务商云主机,快速获取且版本可选,配置灵活定制,但价格不菲
- 通过virtualbox,vmware等软件安装,灵活可定制,但安装时间长且体积大
- 可直接使用linux作为您的电脑系统,但版本固定,无法复用,不利于测试
庆幸的是,Vagrant能够克服以上所有缺点,且只需两行命令便可快速获取到一个Linux。
什么是Vagrant
Vagrant是基于virtualbox、vmware等虚拟机软件,打造的一款便于管理虚拟机的命令行工具集软件。打开vagrant官网,映入眼帘便是 Development environments made easy 几个大字。主旨很明确,使开发环境的搭建更easy,用于创建和配置轻量级、可复用和可移植的开发环境。
总结有如下特点
轻量级, Vagrant环境打包的box常为几百兆,约一软件包大小。同时配置方便,通过编写Vagrant配置文件即可管理虚拟机网络、共享文件、ssh和内存大小等,也可指定预定义脚本实现自动化部署。
可复用 ,Vagrant的box支持版本控制且可分享复用,可采用类似github的网络仓库方式共享。https://atlas.hashicorp.com便是Vagrant官方提供的全球共享网络仓库地址。不过中国访问速度不够给力。
可移植,Vagrant还有一个重要特点,那便是它的可移植、跨平台性特性。无论团队成员使用的是window、macos亦或是linux,一个box可同时提供给任意平台使用,保证了开发环境的统一性。
了解了Vagrant的这些特点,不知道朋友们是否蠢蠢欲动,想一探究竟,看看Vagrant到底如何使用?好!下面进入正题。
软件安装
此处以mac为例,安装Vagrant所需软件,如下
Vagrant
Virtualbox(此文使用virtualbox作为虚拟机软件)
安装Homebrew
访问brew官网https://brew.sh/获取最新的brew安装命令,如下
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew Cask扩展了Homebrew,提供更多资源。获取最新cask资源如下
$ brew tap caskroom/cask
安装Vagrant和Virtualbox
有了cask,mac下的软件安装非常简单,如下
$ brew cask install vagrant$ brew cask install virtualbox
自此,mac下的Vagrant就可以使用了。
Window下载最新的软件包,傻瓜式的安装。这里就不多介绍了。
两行命令创建Linux
首先体验下vagrant如何用两行命令快速创建Linux。如下
配置
Vagrant创建虚拟机需要基于Vagrantfile配置文件。选择合适的目录执行如下命令
$ vagrant init hashicorp/precise64
此时在当前目录下便生成了Vagrant配置文件Vagrantfile,如下
# -*- mode: ruby -*-# vi: set ft=ruby :# ...Vagrant.configure("2") do |config|# ... config.vm.box = "hashicorp/precise64"# ...end
由上可知,此处使用hashicorp/precise64作为启动box。
注:Vagrant采用ruby为配置语言,非常简单,本人未曾写过ruby,但编写配置毫无压力
创建
在配置好配置文件后,使用如下命令
$ vagrant up
便开始从网络下载所需的box文件。待命令执行完成,一个虚拟机便创建完成,至此只用了两行命令。
注:以上步骤会从网络获取启动环境所需box,执行时间视网速而定。
下面便可使用刚刚创建的开发环境了。如下命令登录
$ vagrant ssh
是不是非常方便快捷,此时便可使用属于您的Linux了。
学习路线
上段文字只是为了展示Vagrant一键创建环境的魅力,但如果希望更好使用Vagrant,还有更多知识需要学习。比如
- 如何管理box
- 如何使用命令管理环境
- 怎么配置共享目录
- 怎么配置网络
- 如何搭建多机集群
…
等等。
下面是我根据官方文档梳理而成的学习目录
关于box
介绍配置 https://www.vagrantup.com/docs/getting-started/boxes.html
管理命令 https://www.vagrantup.com/docs/cli/box.html
版本控制 https://www.vagrantup.com/docs/boxes/versioning.html
包的制作 https://www.vagrantup.com/docs/boxes/format.html
环境打包 https://www.vagrantup.com/docs/cli/package.html环境生命周期
环境初始 https://www.vagrantup.com/docs/cli/init.html
创建连接 https://www.vagrantup.com/docs/getting-started/up.html
环境列表 https://www.vagrantup.com/docs/cli/global-status.html
环境详情 https://www.vagrantup.com/docs/cli/status.html
停止环境 https://www.vagrantup.com/docs/getting-started/teardown.html
恢复环境 https://www.vagrantup.com/docs/cli/resume.html
关闭环境 https://www.vagrantup.com/docs/cli/halt.html
重启环境 https://www.vagrantup.com/docs/cli/reload.html
销毁环境 https://www.vagrantup.com/docs/cli/destroy.htmlSSH
系统登录 https://www.vagrantup.com/docs/cli/ssh.html
配置介绍 https://www.vagrantup.com/docs/vagrantfile/ssh_settings.html
配置查看 https://www.vagrantup.com/docs/cli/ssh_config.html网络
基础使用 https://www.vagrantup.com/docs/networking/basic_usage.html
端口映射 https://www.vagrantup.com/docs/networking/forwarded_ports.html
映射查看 https://www.vagrantup.com/docs/cli/port.html
私有网络 https://www.vagrantup.com/docs/networking/private_network.html
公开网络 https://www.vagrantup.com/docs/networking/public_network.html共享文件
默认共享 https://www.vagrantup.com/docs/getting-started/synced_folders.html
基本使用 https://www.vagrantup.com/docs/synced-folders/basic_usage.html#disabled
NFS配置 https://www.vagrantup.com/docs/synced-folders/nfs.html
RSYNC配置 https://www.vagrantup.com/docs/synced-folders/rsync.html
SMB配置 https://www.vagrantup.com/docs/synced-folders/smb.html
Virtualbox共享 https://www.vagrantup.com/docs/synced-folders/virtualbox.html自动部署
基本使用 https://www.vagrantup.com/docs/provisioning/basic_usage.html
文件上传 https://www.vagrantup.com/docs/provisioning/file.html
SHELL脚本 https://www.vagrantup.com/docs/provisioning/shell.html
以上目录涉及的知识,并不需要开发人员全部掌握。毕竟Vagrant是为了是简化开发环境的搭建工作。对于公司,只要团队中有部分几人掌握,便可造福整个团队,加快团队的开发效率。但对于一名技术爱好者而言,学习不应该止于工作层面的。
附录
virtualbox四种网络连接方式 http://www.cnblogs.com/york-hust/archive/2012/03/29/2422911.html