Vagrant使用

Vagrant基本使用

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

C:\vagrant> vagrant box add CentOS72 E:/VagrantBox/vagrant-centos-7.2.box
C:\vagrant> vagrant init CentOS72
C:\vagrant> vagrant up
SSH: 127.0.0.1:2222
username: vagrant
password: vagrant

Vagrant的命令详解

命令 作用
vagrant box add 添加box的操作
vagrant init 初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过 ssh 登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改Vagrantfile后,使之生效
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的所有环境状态

Vagrantfile配置文件

包含虚拟机的配置、SSH配置、Vagrant的一些基础配置。

(1)box设置

config.vm.box = "CentOS72"

(2)hostname设置

config.vm.hostname = "for_work"

设置hostname非常重要,因为当有多台虚拟服务器时,都是依靠hostname进行识别的。比如,安装php7和php56两台虚拟机,再启动时,可以通过vagrant up php7来指定只启动哪一台。

(3)虚拟机网络设置

config.vm.network "private_network", ip: "192.168.33.10"
#config.vm.network "public_network"

Vagrant有两种方式来进行网络连接

  • host-only(主机模式)
  • Bridge(桥接模式),该模式下的VM就像是局域网中的一台独立的主机,有独立IP

(4)同步目录设置

config.vm.synced_folder  "C:/test", "/vagrant"

/vagrant目录默认就是当前的开发目录,是在虚拟机开启时默认挂载同步的。我们还可以通过配置来设置额外的同步目录。

(5)端口转发设置

config.vm.network :forwarded_port, guest: 80, host: 80

意思是将对host机器上80端口的访问请求forward到虚拟机的80端口的服务上,例如你在你的虚拟机上使用Nginx跑了一个PHP应用,那么你在host机器上的浏览器中打开http://localhost时,Vagrant就会把这个请求转发到VM里面跑在80端口的Nginx服务上,因此我们可以通过这个设置来帮助我们去设定host和VM之间,或是VM和VM之间的信息交互。
个人不建议使用该方法,经常因为两台机子端口占用的问题,导致不能正常通信。还是使用上面说的两种网络方式进行设置吧。

集群部署与配置

现在我们来建立多台VM,并且能够相互通信,假设一台是应用服务器、一台是Redis服务器

Vagrant.configure("2") do |config|
  config.vm.define :web do |web|
    web.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
    end
    web.vm.box = "CentOS72"
    web.vm.hostname = "web"
    web.vm.network :private_network, ip: "192.168.33.10"
  end

  config.vm.define :redis do |redis|
    redis.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"]
    end
    redis.vm.box = "CentOS72"
    redis.vm.hostname = "redis"
    redis.vm.network :private_network, ip: "192.168.33.11"
  end
end

现在只需要重新启动一下vagrant up机器,即可启动两台虚拟机。

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/vagrant-usage/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Vagrant使用
Vagrant基本使用 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。 V……
<<上一篇
下一篇>>
文章目录
关闭
目 录