vagrantFile配置

Vagrantfile的主要功能是描述项目所需的计算机类型,以及如何配置和配置这些计算机

有Vagrantfile 文件和box文件,可以直接通过vagrant启动虚拟机。

配置详解:

在我们的开发目录下有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH
配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,所以它的配置语法也是Ruby的,但是我们没有学过Ruby的人还
是可以跟着它的注释知道怎么配置一些基本项的配置。


1.box设置
config.vm.box = "CentOs7"

该名称是再使用 vagrant init 中后面跟的名字。如果init后面不跟名字,则该名字跟box文件名一样。


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" 这种就是hostonly模式
虚拟机启动后,查看ip是192.168.33.10

config.vm.network "private_network", type: "dhcp"


#分配公网地址,配置桥接网络

config.vm.network "public_network"
自动分配本地ip


Vagrant有两种方式来进行网络连接,一种是host-only(主机模式),意思是主机和虚拟机之间的网络互访,而不是虚拟机访
问internet的技术,也就是只有你一個人自High,其他人访问不到你的虚拟机。另一种是Bridge(桥接模式),该模式下的VM
就像是局域网中的一台独立的主机,也就是说需要VM到你的路由器要IP,这样的话局域网里面其他机器就可以访问它了。我一
般设置为host-only模式。 当然该模式,再指定ip的时候注意不要跟主机所在网段发生冲突。


4. 虚拟机镜像版本

config.vm.box_version = "1.1.0"

config.vm.box_version(字符串)

-要使用的box的版本。默认值为“> = 0”(可用的最新版本)。它可以包含任意约束列表,以逗号分隔,例如:>= 1.0, < 1.5给出约束后,Vagrant将使用满足这些约束的最新可用框。

5.配置box路径

config.vm.box_url(字符串,字符串数组)-可以在其中找到配置框的URL。

如果config.vm.boxHashiCorp的Vagrant Cloud中框的简写, 则不需要指定此值。如果是box官网上的box文件不需要路径

否则,它应指向未安装盒子的正确位置。这也可以是多个URL的数组。URL将按顺序尝试。

config.vm.box_url = "https://vagrantcloud.com/hashicorp/precise64"

config.vm.box_url ="centos7-0.0.99.box"

.6.同步目录设置(目录映射)  

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

config.vm.synced_folder "/Users/helei/www", "/vagrant"

config.vm.synced_folder "D:/may/webapi", "/home/vagrant/"


6.端口转发设置
config.vm.network :forwarded_port, guest: 80, host: 80

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

 

上面说的配置方式,均是单机模式,下面说说如何进行集群机器的部署与配置

也就是在一个vagrantfile文件中想定义多个虚拟机       定义vm的configure配置节点(一个节点就是一个虚拟机)


假设一台是应用服务器、一台是redis服务器,那么这个结构在Vagrant中非常简单,其实和单台的配置差不多,你只需要通过config.vm.define来定义不同的角色就可以了,现在我们打开配置文件进行如下设置

 

现在只需要重新启动一下vagrant up机器,你就会在虚拟机中看到两台虚拟机欢快的跑起来了。
然后这个时候,在使用vagrant ssh登录时,需要指明一下登录的是哪一台机器就ok啦。

比如,我要登录到redis中去

vagrant ssh redis

 

参数"2"的含义: 表示的是当前配置文件使用的vagrant configure版本号为Vagrant 1.1+,如果取值为1,表示为Vagrant 1.0.x Vagrantfiles,旧版本暂不考虑,记住就写2即可。

 

do … end 为配置的开始结束符,所有配置信息都写在这两段代码之间。 config是为当前配置命名,你可以指定任意名称,如myvmconfig,在后面引用的时候,改为自己的名字即可。

 

8.我们可以通过这个配置在虚拟机第一次启动的时候进行一些安装配置

config.vm.provision

需要注意的是,Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用
vagrant reload进行重新加载,否则不会被强制重新加载。

其次,如果改变了辅助脚本,需要 vagrant reload --provision

 

 

 

 注意:

如果使用provision来yum安装程序,加上-y参数,如:yum install -y lrzsz

 

 9.在vagrantfile中定义变量

VAGRANTFILE_API_VERSION ||= "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

... ...

end

10、vm提供者配置(virtual box配置)

config.vm.provider "virtualbox" do |vb|

vb.memory = "2048"

end

虚机容器提供者配置,对于不同的provider,特有的一些配置,此处配置信息是针对virtualbox定义一个提供者,命名为vb,跟前面一样,这个名字随意取,只要节点内部调用一致即可。

配置信息又分为通用配置和个性化配置,通用配置对于不同provider是通用的,


1、常用的通用配置如下:
vb.name = "centos7"
#指定vm-name,也就是virtualbox管理控制台中的虚机名称。如果不指定该选项会生成一个随机的名字,不容易区分。
vb.gui = true
# vagrant up启动时,是否自动打开virtual box的窗口,缺省为false
vb.memory = "1024"
#指定vm内存,单位为MB
vb.cpus = 2
#设置CPU个数
2、个性化配置(virtualbox)
#修改vb.name的值
vb.customize ["modifyvm", :id, "--name", "mfsmaster2"]

#如修改显存,缺省为8M,如果启动桌面,至少需要10M,如下修改为16M:
vb.customize ["modifyvm", :id, "--vram", "16"]

#调整虚拟机的内存
vb.customize ["modifyvm", :id, "--memory", "1024"]

#指定虚拟CPU个数
vb.customize ["modifyvm", :id, "--cpus", "2"]

#增加光驱:
vb.customize ["storageattach",:id,"--storagectl", "IDE Controller","--port","0","--device","0","--type","dvddrive","--medium","/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"]
#注:meduim参数不可以为空,如果只挂载驱动器不挂在iso,指定为“emptydrive”。如果要卸载光驱,medium传入none即可。
#从这个指令可以看出,customize方法传入一个json数组,按照顺序传入参数即可。

#json数组传入多个参数
vb.customize ["modifyvm", :id, "--name", “mfsserver3", "--memory", “2048"]

 

posted on 2019-10-22 14:22  yanmay  阅读(150)  评论(0编辑  收藏  举报

导航