vagrant系列二:vagrant的配置文件vagrantfile详解

原创 2016年04月07日 21:45:47

上一篇文章完整的讲叙了如何安装一个vagrant的环境。这里主要说一说vagrant的配置文件Vagrantfile。我在尝试各种技术的时候,常常苦恼于很多时候没有教程把相关的配置信息说明完整。所以在我的博客里,我一定会完整的把这块给补上。

一 配置详解

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

box设置

config.vm.box = "CentOs7"

该名称是再使用 vagrant init 中后面跟的名字。

hostname设置

config.vm.hostname = "for_work"

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

虚拟机网络设置

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

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

同步目录设置

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

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

端口转发设置

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之间的信息交互。
个人不建议使用该方法,经常因为两台机子端口占用的问题,导致不能正常通信。还是使用上面说的两种网络方式进行设置吧。


上面说的配置方式,均是单机模式,下面说说如何进行集群机器的部署与配置,这是vagrant让我正真激动与兴奋的地方。

看完下面,你会觉得超级简单

现在我们来建立多台VM跑起來,並且让他们之间能够相通信,假设一台是应用服务器、一台是redis服务器,那么这个结构在Vagrant中非常简单,其实和单台的配置差不多,你只需要通过config.vm.define来定义不同的角色就可以了,现在我们打开配置文件进行如下设置:

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 = "CentOs7"
    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 = "CentOs7"
    redis.vm.hostname = "redis"
    redis.vm.network :private_network, ip: "192.168.33.11"
  end
end

这里的的设置与设置单台机器非常的类似,如果还需要机器,只需要再配置文件中拷贝一下,然后重新加载一下这个配置文件就ok啦。是不是非常容易?后面我打算学hadoop的时候,就用这种方式来试试。
现在只需要重新启动一下vagrant up机器,你就会在虚拟机中看到两台虚拟机欢快的跑起来了。
然后这个时候,在使用vagrant ssh登录时,需要指明一下登录的是哪一台机器就ok啦。


比如,我要登录到redis中去。

vagrant ssh redis

这么简单就完成登录了。登录成功后,可以使用ping命令,检查一下机器之间是否能够互相通信。

好吧,本地有了如此利器,你想模拟那样的服务器架构,都可以完成了,只有你的单机足够强大,你可以开20台虚拟机,请随意。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hel12he/article/details/51089774

标准建模语言UML的动态建模机制

标准建模语言UML的动态建模机制(本文转载自软件工程专家网www.21cmm.com) 1. 消息  在面向对象技术中,对象间的交互是通过对象间消息的传递来完成的。在UML的四个动态模型中均用到消息这...
  • gigix
  • gigix
  • 2002-03-13 09:22:00
  • 2106

vagrant系列(2):使用Vagrantfile实现集成预安装

在我们的开发目录下,有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,所以...
  • yjk13703623757
  • yjk13703623757
  • 2017-04-26 00:45:01
  • 1291

vagrant学习笔记 - Vagrantfile

《vagrant学习笔记 - 入门》中的hello vagrant配置文件,只是最基本的配置,它使用缺省的box配置初始化了一个虚拟机。有时候,我希望对vm做更详尽的配置,比如配置一次创建一组vm,搭...
  • 54powerman
  • 54powerman
  • 2016-02-16 18:09:26
  • 8836

VAGRANTFILE

VAGRANTFILE 概述 vagrantfile的基本功能就是描述工程需要的机器,以及如何配置和提供这些机器。vagrantfile被称为vagrantfile也仅仅是因为配置文件的文件名就是...
  • ciweiEric
  • ciweiEric
  • 2016-07-13 16:13:03
  • 5742

vagrant 安装与配置

安装VirtualBox (5.0) 直接来到官网 https://www.virtualbox.org/wiki/Downloads 点击下载最新的virtualbox,双击安装,一路傻瓜化完成...
  • sean_cd
  • sean_cd
  • 2017-10-23 17:09:16
  • 270

vagrant系列一:vagrant的安装与初识

Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。 我们可以通过 Va...
  • hel12he
  • hel12he
  • 2016-04-05 23:29:22
  • 22947

vagrant 基本命令、标准配置文件,支持nfs

vagrant基本命令:vagrant init 初始化仓库vagrant box add 别名 xxx.boxvagrant up 开始安装镜像到virtualboxvagrant ssh 进入镜像...
  • ghostyusheng
  • ghostyusheng
  • 2017-03-22 18:19:58
  • 656

Windows 下配置 Vagrant 环境

Vagrant是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境。它使用 Oracle 的开源VirtualBox虚拟化系统。用自己的理解就是自己搭建好的环境可以用这个部署打包分发。Vag...
  • joosonmao
  • joosonmao
  • 2015-09-22 11:46:15
  • 1476

vagrant box配置本地开发环境以及常见错误解决方案

这里有一个参考链接(http://jingyan.baidu.com/article/642c9d34e15cdd644b46f74b.html),当然也可以按照下面的步骤来操作: 一:准备各种材料...
  • tangxiaolang101
  • tangxiaolang101
  • 2016-10-13 11:07:01
  • 7638

Vagrant虚拟化之网络配置

简介一般情况下,我们使用vagrant是在private_network下自high就可以了,但是如果我们需要和工作环境中的其他服务器通信,就需要将vagrant 的网络配置成 public_netw...
  • yanggd1987
  • yanggd1987
  • 2016-09-08 10:46:19
  • 2240
收藏助手
不良信息举报
您举报文章:vagrant系列二:vagrant的配置文件vagrantfile详解
举报原因:
原因补充:

(最多只允许输入30个字)