圣泉山人 后端开发工程师

Vagrant

2016-08-10

什么是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
  • 安装boxvagrant box add centos6 E:\linuxEnv\vagrantboxes\vagrant-centos-6.7.box,其中add后的centos6为自定义title
  • 初始化boxvagrant 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的所有环境状态

遇到的问题

  1. 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"

上一篇 Socket

下一篇 PHP SAPI

Comments

Content