Vagrant使用
Vagrant基本使用
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
- VirtualBox:https://www.virtualbox.org/
- Vagrant:http://www.vagrantup.com/
- Box:http://www.vagrantbox.es/
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全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论