Vagrant的配置文件Vagrantfile详解-1
配置详解
下面是一些常用的配置:
config.vm.hostname:配置虚拟机主机名
config.vm.network:这是配置虚拟机网络,由于比较复杂,我们其后单独讨论
config.vm.synced_folder:除了默认的目录绑定外,还可以手动指定绑定
config.ssh.username:默认的用户是vagrant,从官方下载的box往往使用的是这个用户名。如果是自定制的box,所使用的用户名可能会有所不同,通过这个配置设定所用的用户名。
config.vm.provision:我们可以通过这个配置在虚拟机第一次启动的时候进行一些安装配置
需要注意的是,Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用vagrant reload进行重新加载,否则不会被强制重新加载。
1、box设置
config.vm.box = "newbox"
该名称是再使用 vagrant init 中后面跟的名字。
2、hostname设置
config.vm.hostname = "laravel1"
设置hostname非常重要,因为当我们有很多台虚拟服务器的时候,都是依靠hostname來做识别的。比如,我安装了laravel1,laravel2 两台虚拟机,再启动时,我可以通过vagrant up laravel2来指定只启动哪一台。
3、虚拟机网络设置
私有网络只允许主机访问不允许其他机器访问
config.vm.network "private_network", ip: "192.168.10.11"
共有网络 类似局域网中单独的服务器,允许其他机器访问
config.vm.network "public_network", ip: "192.168.31.190"
配置当前vm的host-only网络的IP地址为192.168.33.10
config.vm.network :private_network, ip: "192.168.33.10"
私有网络的IP可以不指定,而是采用dhcp自动生成的方式,如 :
config.vm.network "private_network", type: "dhcp”
创建一个公共网络,指定IP
config.vm.network "public_network", ip: "192.168.0.17"
创建一个公共网络,指定桥接适配器
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
创建一个公共网络,不指定桥接适配器
config.vm.network "public_network"
4、同步目录设置
config.vm.synced_folder "D:/xxxx", "/home/vagrant/code"
前面的路径(D:/xxx)是本机代码的地址,后面的地址就是虚拟机的目录。虚拟机的/vagrant目录默认挂载宿主机的开发目录(可以在进入虚拟机机后,使用df -h 查看),这是在虚拟机启动时自动挂载的。我们还可以设置额外的共享目录,上面这个设定,第一个参数是宿主机的目录,第二个参数是虚拟机挂载的目录。
5、端口转发设置
config.vm.network :forwarded_port, guest: 80, host: 8001
上面的配置把宿主机上的8080端口映射到客户虚拟机的80端口,例如你在虚拟机上使用nginx跑了一个Go应用,那么你在host上的浏览器中打开http://localhost:8001时,Vagrant就会把这个请求转发到虚拟机里跑在80端口的nginx服务上。不建议使用该方法,因为涉及端口占用问题,常常导致应用之间不能正常通信,建议使用Host-only和Bridge方式进行设置。
guest和host是必须的,还有几个可选属性:
●guest_ip:字符串,vm指定绑定的Ip,缺省为0.0.0.0
●host_ip:字符串,host指定绑定的Ip,缺省为0.0.0.0
●protocol:字符串,可选TCP或UDP,缺省为TCP
Vagrant的配置文件Vagrantfile详解-2 :点击查看