Vagrantfile 配置

配置文件里都写了些啥?

我们先打开Vagrantfile :

Vagrant 就是使用 Ruby 写成的, 所以在这里的配置文件也需要满足 Ruby 语法。

config.vm.box = "ubuntu/trusty64"

可以看到,这两行就是我们在vagrant init中后面所指定的参数。由此可以看出,vagrant init只是帮我们生成了配置文件而已,换句话说,如果我们写好了Vagrantfile,就不需要vagrant init,只需将准备好的配置文件放入到所需目录中,然后直接执行vagrant up即可。

还有很多注释掉的配置,那些都是一些常用的配置,包括网卡设置、IP地址、绑定目录,甚至可以指定内存大小、CPU个数、是否启动界面等等。如果需要,可以根据注释文本进行配置。

下面列出一些常用的配置:

config.vm.hostname:配置虚拟机主机名

config.vm.network:这是配置虚拟机网络,由于比较复杂,我们其后单独讨论

config.vm.synced_folder:除了默认的目录绑定外,还可以手动指定绑定

config.ssh.username:默认的用户是vagrant,从官方下载的box往往使用的是这个用户名。如果是自定制的box,所使用的用户名可能会有所不同,通过这个配置设定所用的用户名。

config.vm.provision:我们可以通过这个配置在虚拟机第一次启动的时候进行一些安装配置,后面我们将专门介绍。

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

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

这将让物理机的8080端口映射到虚拟机的80端口。因此,可以在物理机上直接访问虚拟机所建立的网站。这在虚拟机使用不是桥接的时候尤为重要,因为很多时候默认会禁止物理机通过网络直接访问虚拟机,通过端口映射可以依旧能够访问所需端口。

我们还可以通过config.vm.network来指定所在网络以及IP地址。一般来说,分为private_network还是public_network。

private_network: 私有网络

位于私有网络的主机之间可以互相访问,但是外界无法访问私有网络的主机,对于某些虚拟机而言,连物理机都无法通过网络直接访问虚拟机,此时如果需要使用物理机访问虚拟机,就需要前面所提及的端口映射。例如:

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

public_network:公有网络

在绝大多数虚拟机上,这等同于桥接网络。如果虚拟机选择了桥接方式连接,也就是相当于虚拟机和物理机在网络上处于平等的位置,同样的接在了网卡所在的网络。因此从外界看来,会感觉这是两台独立的计算机。

配置方式和私有网络接近,只需将其中的private_network换成public_network。如要使用 DHCP:

config.vm.network"public_network"

如果物理机存在多块网卡,需要指定某一块作为桥接用,那么可以参考如下配置:

config.vm.network"public_network",:bridge=>'en1: Wi-Fi (AirPort)'

如果是在启动了虚拟机之后,需要重新加载配置,只需要执行:

vagrant reload

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1,介绍Vagrant 我们做web开发的时候经常要安装各种本地测试环境,比如apache,php,mysql,r...
    meng_philip123阅读 2,542评论 0 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • Vagrant学习笔记 简介 vagrant用于快速创建基于VirtualBox、VMware、AWS的虚拟机,提...
    200cc阅读 8,434评论 0 15
  • 坐在回程的公车上,感受着颠簸在脊椎骨上的疼痛,看着车窗外树荫下斑驳的阳光,空气里飘着细细的闪着金黄色微光的灰尘,带...
    谷堆阅读 201评论 0 1
  • 你是否总是在陌生的环境下,不敢提出自己的想法,怕祸从口出? 你是否要等别人行动过后,检验一下此项举动是否安全,才做...
    Lzyyyyyyyyy阅读 267评论 0 0