什么是vagrant?
本质上是一个虚拟机管理程序。可以通过命令行更方便、快捷地控制VirtualBox、VMware等虚拟机。
为什么要使用vagrant?
vagrant
有很多好处,比如:
- 打包一份开发环境后,其他人便可以不再重复搭建环境,类似于
vm
的克隆功能,但是包更轻便 - 同时也可以统一开发环境,保证每个人的代码在同一个环境运行。
- 命令行操作,简单方便
- 可以很方便地同时启动多台虚拟机来搭建、模拟集群
安装
- 安装
VirtualBox
:下载好安装包后,根据提示完成安装即可 - 安装
vagrant
:同安装VirtualBox
一样简单
vagrant 的使用
在使用虚拟机安装一个系统的时候,需要先获取一个系统镜像,然后进行安装。在
vagrant
开源社区中 http://www.vagrantbox.es/ 已经提供了很多打包好的操作系统,被称之为box
。
- 先到开源社区获取一个
box
,当然也可以自己制作一个。这里我获取的是:centos-6.7,放在了目录:E:\linuxEnv\vagrantboxes\vagrant-centos-6.7.box
- 安装
box
:vagrant box add centos6 E:\linuxEnv\vagrantboxes\vagrant-centos-6.7.box
,其中add
后的centos6
为自定义title
- 初始化
box
:vagrant init centos6
,会生成配置文件:Vagrantfile
- 配置
ssh
、网络等
config.vm.box = "CentOs7"
config.vm.boot_timeout = 360
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"
config.vm.network "private_network", ip: "192.168.33.10"
- 启动系统:
vagrant up
,过程中会提示ssh地址:127.0.0.1:2222
,用户名密码都是vagrant
- 使用
xshell
或者命令vagrant ssh
来连接虚拟机系统
配置文件(Vagrantfile)详解
常规配置
# box设置
config.vm.box = "CentOs7"
#hostname设置,多台虚拟机的时候,用来指定启动哪一天,vagrant up nginx
config.vm.hostname = "nginx"
#虚拟机网络设置:host-only(主机模式) ,只能自high,指定的ip不能跟主机所在网段冲突
config.vm.network "private_network", ip: "192.168.33.10"
#Bridge(桥接模式),可以被局域网其他机器访问
config.vm.network "public_network"
#同步目录设置,vagrant在开启一个虚拟机的时候,会把/vagrant当作默认挂载目录,可以通过配置修改,比如
config.vm.synced_folder "/linux/centos6", "/vagrant"
#端口转发设置,比如:把对host机器上8080端口的访问请求forward到虚拟机的80端口的服务上。但是不建议用,容易造成端口占用等
config.vm.network :forwarded_port, guest: 80, host: 80
服务器集群配置
待完善…
附录
vagrant命令
命令 | 作用 |
---|---|
vagrant box add |
添加box的操作 |
vagrant init |
初始化box的操作,会生成vagrant的配置文件Vagrantfile |
vagrant up |
启动本地环境 |
vagrant ssh |
通过 ssh 登录本地环境所在虚拟机 |
vagrant halt |
关闭本地环境 |
vagrant suspend |
暂停本地环境 |
vagrant resume |
恢复本地环境 |
vagrant reload |
修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up) |
vagrant destroy |
彻底移除本地环境 |
vagrant box list |
显示当前已经添加的box列表 |
vagrant box remove |
删除相应的box |
vagrant package |
打包命令,可以把当前的运行的虚拟机环境进行打包 |
vagrant plugin |
用于安装卸载插件 |
vagrant status |
获取当前虚拟机的状态 |
vagrant global-status |
显示当前用户Vagrant的所有环境状态 |
遇到的问题
vagrant up
的时候出现:
default: Key inserted! Disconnecting and reconnecting using new SSH key...
default: Warning: Authentication failure. Retrying...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period
在配置中加入下面的配置即可:
config.vm.boot_timeout = 360
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"