搭建本地的 vm 开发测试平台: vagrant

系统建
• 阅读 3262

背景

服务器开发现在经常涉及分布式系统,不再是仅仅管理好自己的进程就可以了,需要管理进程间的协作,服务器间的协作。这就需要启动多个 vm,没有一个自动化的方案,这个过程会非常烦人。

vagrant 是专门解决此问题的利器。

安装

  1. 首先我们要安装 VirtualBox,免费的虚拟机。当前版本 5.0.0。
  2. 然后下载安装 vagrant,命令行下管理虚拟机的工具。当前版本 1.7.4。
  3. VirtualBox 的虚拟机(guest)要想直接与宿主机器的文件系统交互,需要安装 guest addition。如果我们要给每个虚拟机来收工安装它,自动化还从何说起?安装插件 vagrant-vbguest。
shellvagrant plugin install vagrant-vbguest

配置

接着需要创建一个工程目录,如 vm-run,把自己对于这个 vm 的设置都放在这里。

我们要创建一个 Vagrantfile 的配置文件,来配置这个 vm 集群,这里将包括有几个 vm,它们从哪里安装系统(image)、它们的 ip 地址等基本配置。例如:

text# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
box_url = "https://github.com/kraksoft/vagrant-box-ubuntu/releases/download/14.04/ubuntu-14.04-amd64.box"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.ssh.insert_key = false

  config.vm.provider "virtualbox" do |v|
    v.memory = 2048
  end

  config.vm.define "node1" do |node|
    node.vm.box = "ubuntu14"
    node.vm.box_url = box_url
    node.vm.network "private_network", ip: "192.168.50.4"
  end

  config.vm.define "node2" do |node|
    node.vm.box = "ubuntu14"
    node.vm.box_url = box_url
    node.vm.network "private_network", ip: "192.168.50.5"

    node.vm.network "forwarded_port", guest: 5555, host: 12201, protocol: 'tcp'
  end

  config.vm.define "node3" do |node|
    node.vm.box = "ubuntu14"
    node.vm.box_url = box_url
    node.vm.network "private_network", ip: "192.168.50.6"
  end

end

创建了三个 vm。

使用

  • 一切完成后,我们可以用 vagrant up 来启动整个集群!
  • 你可以用 ssh -i ~/.vagrant.d/insecure_private_key vagrant@192.168.50.4 来连接 vm,也可以更简单,用 vagrant ssh node1 来登入。
  • vagrant suspend 将集群暂停。
  • 如果集群有问题,或者我们需要确保一个全新的集群,vagrant destroy -f可以删除全部 vm。
点赞
收藏
评论区
推荐文章
九路 九路
4年前
Android 内存管理机制
前言:Android系统是基于Linux内核开发的操作系统,而Linux系统有其独到的内存管理机制,会在进程活动停止后结束该进程。Android在此基础上优化了内存管理,会把进程都保存在内存中,直到系统需要更多内存为止,释放部分进程。这些被保存在内存中的进程,并不会影响系统的运行速度,相反,在重新打开这些进程时,会提升进程启动速度Android内存管
Wesley13 Wesley13
3年前
Vagrant使用国内镜像安装插件和box镜像
!(https://static.oschina.net/uploads/img/202007/04095756_VHPI.jpg)dui前言Vagrant是非常优秀的本地虚拟化管理工具。无奈国内访问速度实在感人。本文分享一些如何使用国内镜像加速的经验,让Vagrant的使用更加爽快。插件镜像V
Wesley13 Wesley13
3年前
Vagrant定制个性化CentOS7虚拟机模板
关于虚拟机模板想用vagrant搭建hadoop集群,要完成以下准备工作:1.三个虚拟机实例操作系统都是CentOS7的server版;2.每个实例都要安装同样的应用、关闭防火墙、关闭swap等;今天就来做个模板,用此模板创建好的虚拟机都已经完成了上述操作;关于vagrant的安装和基本操作,请参考《Mac下vagrant从
Easter79 Easter79
3年前
Supervisor中启动netcore网站
1.安装配置Supervisorsupervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功
Stella981 Stella981
3年前
Gitolite 构建 Git 服务器
如果不是要和他人协同开发,Git根本就不需要架设服务器。Git在本地可以直接使用本地版本库的路径完成git版本库间的操作。但是如果需要和他人分享版本库、协作开发,就需要能够通过特定的网络协议操作Git库。Git支持的协议很丰富,架设服务器的选择也很多,不同的方案有着各自的优缺点。 HTTPGITDAEM
Wesley13 Wesley13
3年前
virtualbox+vagrant学习
HTTPSharingVagrantShare可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器。这被称为“HTTP共享”,在使用VagrantShare时默认启用。因为这种共享模式创建了一个可公开访问的URL,所以访问方不需要安装Vagrant来查看你的环境。这有许多有用的用例:你
Wesley13 Wesley13
3年前
1.vagrant安装
记录几个坑爹的点:1.路径不能出现中文,不然安装失败2.win10使用vagrant命令时,需要使用管理员权限3.virtulbox需要在path环境变量里配置安装地址,否则vagrantup的时候,不会使用virtulbox4.当使用vagrantup发现启动卡住了之后,查看virtualbox,会发现需要输入账户和密码,输入之后登录成
Stella981 Stella981
3年前
Jenkins实现SVN .NET持续集成
  在工作过程中,由于经常要提版本给测试,再由测试负责发布,经常会出现,提测一个产品,需要发布多个服务,包括网站,网站的服务,网站的后台管理已经后台管理的服务。总之,一次提测,要发布的东西会非常多,开发麻烦,测试更加麻烦,所以为了解决这个问题,决定采用Jenkins来实现一键发布。一、安装Jenkins  Jenkins下载地址:https
Wesley13 Wesley13
3年前
vagrant使用小结
vagrant使用小结最近公司用了vagrant的虚拟镜像服务,感觉挺不错的.在此仅记录使用方法.优点:我们可以通过Vagrant封装一个Linux的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气.主要是看重它可以让开发人员在同样开发环境下
Stella981 Stella981
3年前
Git 多人协作开发的过程
Git可以完成两件事情:1\.版本控制2.多人协作开发如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发。如果有多个开发人员共同开发一个项目,如何进行协作的呢。Git提供了一个非常好的解决方案多人协作开发。1.多人协作原理典型的做法是,首先创建一个git服务器,被多个人所
jar包冲突组建设计书
.背景实际开发过程中,使用maven管理jar给我们开发带来了很多便利,不需要自己一个一个的jar包下载了,只需要配置个pom配置文件就可以了,写上对应坐标和仓库地址就可以了。但是jar冲突没问题没有解决,有冲突的jar包maven不会给我们检查出来还是会
系统建
系统建
Lv1
现实如山,而我浪漫如云。
文章
1
粉丝
0
获赞
0
热门文章

暂无数据