介绍

Development Environments Made Easy

—官网标题

vagrant是一个命令行的虚拟机管理程序。用于简化搭建开发环境。

vagrant使用ruby语言基于Chef 开发。需要配合其他虚拟机程序进行工作,如vmare、virualbox、hyper-v等。并通过 CLIVagrantFile(配置文件)管理虚拟机的所有功能。vagrant 使用自己的镜像格式进行环境部署,即box。类似于虚机的iso或者docker中的镜像。

选择vagrant+virualbox这个组合,因为它们都是开源的、跨平台的。vagrant搭建开发环境即简单又强大。

安装

官网下载安装。其中virualbox可选择安装

VirtualBox Extension Pack。使用虚拟机需要BIOS 开启虚拟化。

VirtualBox 官网

https://www.virtualbox.org/

Vagrant 官网

http://www.vagrantup.com/

BOX查找

https://app.vagrantup.com/boxes/search

几个场景

下面介绍几种vagrant 使用场景。所有步骤在WIN11系统下验证过。

1、一行命令搭建基本的开发环境

在CMD命令行下启动一个包含centos系统的虚拟机。其中"centos/7"是box名,root用户的默认密码是vagrant。真简单。

  1. mkdir demo && cd demo && vagrant init centos/7 && vagrant up

2、单机开发环境

目标是搭建一个少量定制的单机开发环境。需要使用CLI命令和配置文件来完成。

手动下载BOX

网速慢可以自己下载box文件,并添加到本地box库。

下载地址:

https://app.vagrantup.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box

box添加到本地库的命令

  1. vagrant box add centos/7 CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

**初始化 **进入命令行,建立一个目录,用centos/7 box 初始化。

  1. md demo
  2. cd demo
  3. vagrant init centos/7

基本的配置文件 初始化后会在当前目录生成名为 Vagrantfile 的文件。以Ruby语言为格式。

  1. Vagrant.configure("2") do |config|
  2. config.vm.box = "centos/7" #box名称
  3. config.vm.hostname="base" #虚拟机操作系统里的hostname
  4. config.vm.network "private_network", type: "dhcp" #使用私有网络,自动分配IP
  5. #config.vm.network "private_network", ip: "172.28.128.3" #也可以配置静态IP
  6. config.vm.provider "virtualbox" do |vb|
  7. vb.gui = false #启动时不开启GUI
  8. vb.memory = "4096" #内存限制4096MB
  9. end
  10. end

常用命令

  1. vagrant up #启动虚拟机
  2. vagrant status #查看虚拟机状态
  3. vagrant ssh #链接虚拟机
  4. vagrant halt #关闭虚拟机
  5. vagrant destroy #删除虚拟机
  6. vagrant reload #重启虚拟机,可以生效修改的配置。

3、集群开发环境

目标是搭建一个运行在局域网中、包含多台物理机和虚拟机的集群环境。

思路是安装好公共box后,对其进行定制。打包成自定义box,分发到不同的物理机上部署。

使用vagrant的公共网络模式,为每个虚拟机在局域网分配固定IP,集群环境里的任意物理机和虚拟机可以直接互通。

初始化一个centos环境

  1. md test
  2. cd test
  3. vagrant init centos/7

定制环境

允许用户名密码链接SSH

使用vagrant ssh 链接虚拟机

  1. vagrant ssh
  2. su #切换 root用户,密码vagrant
  3. vagrant
  4. vi /etc/ssh/sshd_config #编辑ssh配置文件

修改配置项、允许密码登陆,并保存。

PasswordAuthentication yes

  1. service sshd restart #重启ssh服务

操作系统设置

  1. #修改时区
  2. timedatectl set-timezone Asia/Shanghai
  3. #关闭防火墙
  4. systemctl stop firewalld
  5. systemctl disable firewalld
  6. #关闭Linux
  7. sed -i 's/enforcing/disabled/' /etc/selinux/config
  8. setenforce 0
  9. #关闭swap
  10. swapoff -a #临时关闭
  11. sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
  12. free -g #验证,swap必须为0

设置阿里云Centos镜像源

  1. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  2. yum clean all
  3. yum makecache
  4. yum update -y

安装Docker

  1. #依赖
  2. yum install -y yum-utils device-mapper-persistent-data lvm2
  3. #源
  4. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. #版本
  6. yum list docker-ce --showduplicates | sort -r
  7. #安装
  8. yum install docker-ce-18.03.1.ce-1.el7.centos -y
  9. #启动
  10. systemctl start docker
  11. systemctl enable docker
  12. #设置阿里云docker镜像源
  13. sudo mkdir -p /etc/docker
  14. sudo tee /etc/docker/daemon.json <<-'EOF'
  15. {
  16. "registry-mirrors": ["https://mt1tth70.mirror.aliyuncs.com"]
  17. }
  18. EOF
  19. systemctl daemon-reload
  20. systemctl restart docker

自定义BOX

打包当前环境,默认名称package.box。加入本地库,取名base。

box本地仓库 默认路径 C:\Users\Administrator.vagrant.d\box

  1. vagrant package
  2. vagrant box add **base **package.box

配置文件

  1. Vagrant.configure("2") do |config|
  2. #虚拟机1号
  3. config.vm.define "node201" do |node1|
  4. node1.vm.box = "base" #使用自定义的box
  5. node1.vm.hostname = "node201"
  6. node1.vm.network "public_network", ip: "192.168.31.201"
  7. end
  8. #虚拟机2号
  9. config.vm.define "node202" do |node2|
  10. node2.vm.box = "base"
  11. node2.vm.hostname = "node202"
  12. node2.vm.network "public_network", ip: "192.168.31.202"
  13. end
  14. # config.vm.define "node203" do |node3|
  15. # node3.vm.box = "base"
  16. # node3.vm.hostname = "node203"
  17. # node3.vm.network "public_network", ip: "192.168.31.203"
  18. # end
  19. config.vm.provider "virtualbox" do |vb|
  20. vb.gui = false
  21. vb.memory = "4096"
  22. vb.cpus = 4
  23. end
  24. end

部署集群环境

将打包好的自定义box和配置文件,复制到需要部署的各物理机,并且安装vagrant环境。

通过vagrant box add 将box添加到物理机的本地库中。

调整 Vagrantfile 并通过 vagrant init进行部署。

结语

扩展阅读vagrant的CLI、VagrantFile、插件、网络配置等可以在官网文档找到。

Documentation | Vagrant by HashiCorp (vagrantup.com)

Vagrant 搭建开发环境实践的更多相关文章

  1. MAC使用vagrant搭建开发环境

    公司的开发环境是这样的: Windows主机通过虚拟机安装CentOS.平时在Windows下编辑代码,然后跑到虚拟机里编译. 我自己有台MAC,本来准备直接在MAC上装开发环境的.基于以下两个原因放 ...

  2. vagrant 搭建开发环境

    虚拟机盒子地址 https://app.vagrantup.com/boxes/search vagrant init hirocom/centos7.2vagrant up 修改配置 config. ...

  3. 和重复搭建开发环境说 Bye Bye 之Vagrant

    每每新同事入职,都要在自己电脑上配置一堆环境,费神费力:每每开发测试都要重新配置开发环境,手工搭建,步骤很繁琐,极易出错. 大神在时,大神搭建,大神不在,以手抚膺坐长叹.为此,VVVVVagrant横 ...

  4. vue.js2.0实战(1):搭建开发环境及构建项目

    Vue.js学习系列: vue.js2.0实战(1):搭建开发环境及构建项目 https://my.oschina.net/brillantzhao/blog/1541638 vue.js2.0实战( ...

  5. GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  6. maven实战(01)_搭建开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

  7. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  8. Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The ...

  9. java攻城师之路(Android篇)--搭建开发环境、拨打电话、发送短信、布局例子

    一.搭建开发环境 1.所需资源 JDK6以上 Eclipse3.6以上 SDK17, 2.3.3 ADT17 2.安装注意事项 不要使用中文路径 如果模拟器默认路径包含中文, 可以设置android_ ...

随机推荐

  1. EF架构封装类

    http://www.woxihuan.com/46528208/1323334777088641.shtml http://www.ediclot.com/archives/2368 http:// ...

  2. BF算法(串模式匹配算法)

    主串和子串 主串与子串:如果串 A(如 "shujujiegou")中包含有串 B(如 "ju"),则称串 A 为主串,串 B 为子串.主串与子串之间的关系可简 ...

  3. 记录不存在则插入,存在则更新 → MySQL 的实现方式有哪些?

    开心一刻 今天我爸.我.我女儿一起吃饭,我们每人一个鸡腿 女儿问道:爸爸,你吃鸡腿吗 我以为她要把她的鸡腿给我吃,倍感欣慰地说道:我不吃,宝贝 女儿一把抓起我的鸡腿放进了她爷爷的碗里,说道:不吃给爷爷 ...

  4. 【原创】linux mint 17.3 kvm 安装windows7虚拟机

    一.安装windows7虚拟机 linux mint 17.3是一个不错的桌面发行版本,我下载了 linux mint 17.3 for xfce 桌面版本,运行速度没得说,而且安装设置都挺简单,非常 ...

  5. 整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令也非常的多,对于初学 ...

  6. T183637-变异距离(2021 CoE III C)【单调栈】

    正题 题目链接:https://www.luogu.com.cn/problem/T183637 题目大意 给出\(n\)个二元组\((x_i,y_i)\),求最大的 \[|x_i-x_j|\time ...

  7. Golang使用swaggo自动生成Restful API文档

    #关于Swaggo 相信很多程序猿和我一样不喜欢写API文档.写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全.但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至 ...

  8. bootstrap inputfile 使用-上传,回显

    近期用bootstrap 做前端的上传,功能涉及到上传时就是召网上的教程随便弄一搜一大把,但是做到修改页面时候不知道页面该如何回显,折腾了一阵子才完成遂记录下来希望能给看到的小伙伴有点启发吧. 首先是 ...

  9. redis无法连接

     Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redi ...

  10. 设置 SSH 命令行空闲保持会话

    楔子 使用 Mac 或 Linux 原生的命令行 ssh user@ip 方式连接 Linux 闲时会自动断开终端卡死. 为解决这个问题,查了到篇博客翻译下关键步骤记录下来.解决方式可以分服务端设置和 ...