vagrant部署开发环境,爽的不是一点点
首先说说vagrant与docker的区别
vagrant是用来管虚拟机的,而docker是管容器的(如不准确,还望指正)
docker的启动速度当然是无可比拟的,而vagrant当然不是要很docker比启动速度的,vagrant就是管虚拟机的,虚拟机与容器的区别,大家见仁见智。
再来介绍一下vagrant:
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境---百度百科
首先提一个需求,我想批量的创建一批虚拟机,基于不同的镜像,基于不同的系统(这里主要是Linux系统),每个主机拥有若干网卡并分配指定网段及IP。
如果是vmware,我想大多数人想的是不停的点击不同的按钮已完成上面的需求,当然了,如果用pyVmomi也许并不需要太多的人工点击(笔者觉得一步一步的重复点击是很反人类的~)
如果是其他云平台,当然是借助API了,不过我想创建的这一批主机是能像docker一样分发的,比如让每个人在主机的电脑上就能简单的创建所需环境,而在私有云上,每人一套可能就太浪费资源了,每个人公用,又显得不是那么干净。
如果不是以主机为单位,基于docker,将服务应用打散,放置于各个容器,并用docker编排工具如kubernetes,compose什么的来创建也是不错的,不过这里为了突出一下vagrant的便捷就以主机为单位了。
需求继续具体如下,2个app server,2个db server,1个负载均衡lb server
再次之前,简单的vagrant入门一下
vagrant安装
一:安装virtualbox
下载对应的安装包
https://www.virtualbox.org/wiki/Downloads
二:安装vagrant
下载对应的安装包
https://www.vagrantup.com/downloads.html
因为个平台都有对应的安装包,所以安装过程就不做过多介绍
本文主要在window上操作
virtualbox 4.2.36
vagrant 1.8.1
Linux平台如centos参考 https://www.geek-share.com/detail/2583840245.html
安装完成后应该是这样的
然后之主要用的几个命令,详细说明参考,官方文档:https://www.vagrantup.com/docs/
本文主要说明以下几个选项
centos6是我们为自定义的box名字,后面会用到,最后接的是box文件路径注:建议本地添加时候工作目录与box文件在同一磁盘下,比如C盘,D盘
在线添加box,在线添加的box名称格式为 用户/box名,参考https://atlas.hashicorp.com/boxes/search,如下
[code=bash;toolbar:false">vagrant box add hashicorp/precise64 或者 vagrant box add https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
vagrant init centos6[p]将所有注释去除后,主要内容如下Vagrant.configure(2) do |config| config.vm.box = "centos6" end上面的 config.vm.box = "centos6",主要是说明基于哪个box文件。
启动过程如上。
关机则是vagrant halt挂起vagrant suspend从挂起状态恢复vagrant resume整机虚拟机销毁,有点从磁盘上移除的意思vagrant destroy注:上面的命令都得在vagrantfile文件所在目录
然后是查看虚拟机状态vagrant status查看当前目录下vagrantfile文件对应的虚拟机状态vagrant global-status查看全局虚拟机状态
注:既然虚拟机,当然能执行快照什么的,请自行探索
入门结束。。。
进入正题
批量创建2个app server,2个db server,1个负载均衡lb server
app_servers.each do |app_server_name,app_server_ip|
config.vm.define app_server_name do |app_config|
app_config.vm.host_name = app_server_name.to_s
app_config.vm.network :private_network,ip: app_server_ip[0]
app_config.vm.network :private_network,ip: app_server_ip[1],virtualbox_inet:true
end
end
主要有两点说明
一:有几个do,就有几个end
二:遍历app-server,用app_servers.each do |app_server_name,app_server_ip|,而其中app_server_name,app_server_ip当然是遍历时候的变量了,对应app-server里面的app1,['192.168.13.2','192.168.15.3']
config.vm.define 定义创建的主机名
- vagrant部署开发环境,爽的不是一点点
- 使用Vagrant在Windows下部署开发环境
- 使用vagrant部署开发环境
- Windows 10下Laravel的开发环境安装及部署(Vagrant + Homestead)
- Vagrant 创建和部署虚拟化开发环境
- 用 vagrant 实现虚拟开发环境的快速部署
- 使用Vagrant在Windows下部署开发环境
- 使用Vagrant在Windows下部署开发环境
- Windows 10下Laravel的开发环境安装及部署(Vagrant + Homestead)
- 使用Vagrant在Windows下部署开发环境
- 使用Vagrant在Windows7下部署开发环境
- Windows 10下Laravel的开发环境安装及部署(Vagrant + Homestead)
- 使用Vagrant在Windows平台搭建嵌入式Linux开发环境(1)虚拟环境部署
- Vagrant 部署python开发环境
- 使用Vagrant在Windows下部署开发环境
- 部署vagrant开发环境
- 使用Vagrant在Windows下部署开发环境
- vagrant部署开发环境(windows环境)
- node.js部署开发环境,node不是内部命令也不是外部命令解决方案
- Ubuntu下Laravel的开发环境安装及部署(Vagrant + Homestead)