vagrant 起航

前言

Vagrant是一款用于构建及配置虚拟开发环境的软件,基于Ruby,主要以命令行的方式运行。主要使用Oracle的开源VirtualBox虚拟化系统, 可以实行快速虚拟开发环境的构建。Vagrant 通过使用 Boxs 和 Vagrantfiel 来创建和管理完整的可移植开发环境。

1. 安装 Vagrant

我们将使用 VirtualBox 搭建虚拟开发环境。首先,请确保您的开发计算机已 安装VirtualBox 并且安装好 Extension Pack 扩展包。之后, 下载并安装适用于您的OS的Vagrant软件包

2. 构建第一个虚拟环境

  • 建立 centos7 的 Vagrantfile 配置(第3节会详细讲解 Vagrantfile
vagrant init centos/7

  • 建立虚拟机器并开启机器
vagrant up

注意:以上 vagrant up 命令还将触发 Vagrant centos/7 通过指定的URL下载该box。Vagrant仅在检测到您的系统上不存在该box时才这样做。

我们还可以使用以下命令操作您的虚拟环境

// 关闭机器
vagrant halt 
// 重启机器
vagrant reload
// SSH 远端连接
vagrant ssh
// 移除虚拟机器
vagrant destroy

3. Vagrantfile 配置

因为 Vagrant 使用 "Provisioners" 和 "Providers" 作为开发环境的构建模块,而Vagrantfile是记录Providers和Provisioners的相关信息。
Providers作为服务,帮助vagrant使用Boxes建立和创建虚拟环境。Vagrant提供的内嵌的Provider有 VirtualBox、Hyper-V、Docker、VMware,而AWS以插件形式提供支持。
当使用VirtualBox等Provider,需要使用Boxes才能创建虚拟环境。当使用Docker作为Provider时,则不需要Boxes。
虚拟环境被创建后,开发者可以使用Provisioners自动化地自定义该虚拟环境。

Vagrantfiles 的语法是 Ruby,但是对 Vagrantfile 修改并不需要我们去了解 Ruby 编程语言,因为只是对它进行简单的变量分配。

3.1 vagrant 如何加载 Vagrantfile

我们要了解一个重要概念是 Vagrant 如何加载 Vagrantfile 。Vagrant 实际上会加载很多个 Vagrantfile,并合并设置。所以就有了加载顺序。

  1. 首先加载的是 vagrant package 打包的 box 中的 vagrantfile。
  2. 下一步加载 Vagrant 主目录下的 Vagrantfile (默认为 Users\~\.vagrant.d )。
  3. 然后加载项目目录中的 Vagrantfile。
  4. 加载 config.vm.define 中的配置,您配置的多机器环境中的配置

对于大多数的设置,新的设置会覆盖旧的设置。但是,对于定义网络之类的实际上它是彼此附加的。

3.2 Vagrantfile 常用配置

  • config.vm.hostname 计算机名称

  • config.vm.box 它的值是 Vagrant Cloud 中已安装的盒子的名称或盒子的简写名称 。

  • config.vm.network
    它提供了三个网络类型,每个网络类型都对应一个标识符,例如:"public_network"。该命令也可以定义多个网络类型。

    1. 公共网络 “public_network”
      有种非常简单的配置,通过 DHCP 自动获取 IP
      config.vm.network "public_network"
      静态配置 IP
      config.vm.network "public_network", ip: "192.168.0.1"
    2. 私有网络 "private_network"
      DHCP方式
      config.vm.network "private_network", type: "dhcp"
      静态配置方式(注意分配使用专用IP地址空间的网络)
      config.vm.network "private_network", ip: "10.0.0.0"
    3. 端口转发 "forwarded_port"
      config.vm.network "forwarded_port", guest: 80, host: 8080
      guest为虚拟机端口,host为主机端口
  • config.vm.provider
    Vagrant可以配置其他程序(VirtualBox等)提供的配置,以便充分使用提供程序。

Vagrant.configure("2") do |config|
  config.vm.provider "virtualbox" do |vb|
    ...
  end
end

常用VirtualBox设置

  1. 内存 vb.memory = "2048"
  2. cpu vb.cpus = 2
  3. virtualbox显示的名称 vb.name = "api"

以下是单机环境完整的配置

Vagrant.configure("2") do |config|
    config.vm.hostname="api"
    config.vm.box = "centos/7"
    config.vm.network "public_network"

    config.vm.provider "virtualbox" do |vb|
      # 内存设置
      vb.memory = "2048"
      # cpu
      vb.cpus = 2
      # virtualbox显示的名称
      vb.name = "api"
    end
end
  • config.vm.define
    Vagrantfile可以定义和控制多台虚拟机器。通常情况下定义多机器环境,是对服务进行分离或是搭建分布式环境时候使用。
Vagrant.configure("2") do |config|

  config.vm.define "api" do |api|
    api.vm.box = "api"
  end

  config.vm.define "mysql" do |mysql|
    mysql.vm.box = "mysql"
  end
end

如果您在Vagrantfile中定义了多台虚拟机器,vagrant 的命令也会有些变化

  1. vagrant up 会同时启动 api 和 mysql,如果您只想启动其中某台机器也可以具体的执行 vagrant up apivagrant up mysql。只需要后面加上具体的计算机名称。
  2. vagrant ssh 具体执行 vagrant ssh apivagrant ssh mysql
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容