介绍

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。真简单。

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添加到本地库的命令

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

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

md demo
cd demo
vagrant init centos/7

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

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

常用命令

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

3、集群开发环境

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

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

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

初始化一个centos环境

md test
cd test
vagrant init centos/7

定制环境

允许用户名密码链接SSH

使用vagrant ssh 链接虚拟机

vagrant ssh

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

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

PasswordAuthentication yes

service sshd restart #重启ssh服务

操作系统设置

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

设置阿里云Centos镜像源

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

安装Docker

#依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
#源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#版本
yum list docker-ce --showduplicates | sort -r
#安装
yum install docker-ce-18.03.1.ce-1.el7.centos -y
#启动
systemctl start docker
systemctl enable docker
#设置阿里云docker镜像源 sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mt1tth70.mirror.aliyuncs.com"]
}
EOF systemctl daemon-reload
systemctl restart docker

自定义BOX

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

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

vagrant package
vagrant box add **base **package.box

配置文件

Vagrant.configure("2") do |config|

  #虚拟机1号
config.vm.define "node201" do |node1|
node1.vm.box = "base" #使用自定义的box
node1.vm.hostname = "node201"
node1.vm.network "public_network", ip: "192.168.31.201"
end #虚拟机2号
config.vm.define "node202" do |node2|
node2.vm.box = "base"
node2.vm.hostname = "node202"
node2.vm.network "public_network", ip: "192.168.31.202"
end # config.vm.define "node203" do |node3|
# node3.vm.box = "base"
# node3.vm.hostname = "node203"
# node3.vm.network "public_network", ip: "192.168.31.203"
# end config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.memory = "4096"
vb.cpus = 4
end 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. 线程调用BeginInvoke

    线程异步调用 Thread objThread = new Thread(new ThreadStart(delegate             {                 Dispatch ...

  2. Spring Cloud Eureka 之服务端自我注册

    Eureka服务端实现了一种自我注册机制,涉及配置项: eureka.client.register-with-eureka spring.application.name Eureka Server ...

  3. STM32CbueIDE 与 J-Link

    STM32CbueIDE 与 J-Link 无论是 STM32CbueIDE 还是 Keil, 在使用 JLink 的时候都不过是先启 JLink 的 GDB 服务,然后再"远程" ...

  4. 我爬取交通学博士付费的GIS资源,每年被动收入2w很简单?

    目录 1.背景介绍 2.技术路线 3.数据结果 4.数据分析 5.总结 6.后记 1.背景介绍 某周末闲来无事,顺手打开了CSDN,看到了一个人发布的收费GIS资源,售价是¥19.9,POI数据也有人 ...

  5. python刷题第二周

    1: 第3章-5 字符转换 (15 分) 本题要求提取一个字符串中的所有数字字符('0'--'9'),将其转换为一个整数输出. 输入格式: 输入在一行中给出一个不超过80个字符且以回车结束的字符串. ...

  6. Dapr + .NET Core实战(五)Actor

    什么是Actor模式 Actors 为最低级别的"计算单元" 以上解释来自官方文档,看起来"晦涩难懂".大白话就是说Actors模式是一段需要单线程执行的代码块 ...

  7. ubuntu安装git并配置SSH Key

    安装git apt-get install git 配置git的用户名和邮箱: ssh-keygen -trsa -C "youremail@example.com" ssh-ke ...

  8. 使用php函数 json_encode ,数据存入mysql

    $data = json_encode($array); // 过滤 $data = addslashes($data); // 插入数据库 $db->insert($table_name,ar ...

  9. Monte-carlo-simulation

    https://towardsdatascience.com/how-to-use-monte-carlo-simulation-to-help-decision-making-a0a164bc861 ...

  10. HttpClient遭遇Connection Reset异常,如何正确配置?

    最近工作中使用的HttpClient工具遇到的Connection Reset异常.在客户端和服务端配置不对的时候容易出现问题,下面就是记录一下如何解决这个问题的过程. 出现Connection Re ...