Vagrant - 打造跨平台的一致开发环境
借助 Vagrant ,可以使用 Vagrantfile 文件自动化虚拟机的安装和配置流程,方便快速的打造跨平台的统一开发环境。
1. Vagrant 是啥
Vagrant 用于构建及配置虚拟开发环境,基于 Ruby 开发,主要以命令行方式运行。
Vagrant 主要使用 VirtualBox 虚拟机,与 Chef,Salt,Puppet 等环境配置管理软件搭配使用, 可以实行快速构建虚拟开发环境,包括:
- 控制虚拟机的启动
- 配置虚拟机的网络环境
- 配置虚拟机与主机间的文件共享
- 设置启动后自动执行的脚本,比如自动通过脚本安装 MySQL
需要在多台机器间同步开发环境时,只需要同步同一个 Vagrantfile 文件就可以保证所有机器拥有一致的开发环境,运行 vagrant up 命令即可。
2. Vagrant 的概念及安装
2.1 概念
- Provider:供 Vagrant 调用的虚拟化工具,可以是 VirtualBox、VMWare、Xen、Docker、AWS。这些虚拟化工具需要提前安装在你的电脑上。vagrant 会自动在底层通过统一的命令调用这些虚拟化工具。
- Box:Vagrant 可直接使用的虚拟机镜像文件,不同的 Provider 对应的 Box 文件的格式不一样。具体可以查看 官方仓库,仓库中可以按照 Provider 类型过滤 Box,也可以查看每个 Box 支持的 Provider 类型。
- Vagrantfile:配置文件,Vagrant 会根据这个配置文件创建虚拟机。在 Vagrantfile 文件中需要指明使用哪个 Box(可以是本地或官方仓库中的),虚拟机如何配置等信息。
- Provisioner:Vagrant 的一种插件。大部分现成的 box 不能满足需求,可以使用你熟悉的 Provisioner,比如 Puppet,在通过
vagrant up命令启动虚拟机时自动安装软件、修改配置等初始化操作。也可以使用 shell provisioner 通过执行 shell 命令完成。 - Guest Additions:这个是常在下载 base box 介绍里有的,一般用来实现 host 到 vm 的端口转发、目录共享,在开发环境上都建议装上以便测试。
2.2 安装
前提条件:首先安装 VirtualBox。
直接在官网的 下载页面 下载对应操作系统版本的软件安装即可。
对于 CentOS,直接下载对应的 rpm 文件,然后通过命令 rpm -ivh XX.rpm 安装即可。
2.3 常用命令
# Box 相关命令
vagrant box list # 列出 Box
vagrant box add USERNAME/BOX_NAME # 添加别人做好的 Box,在线下载
vagrant box add PATH/TO/BOX # 添加本地离线下载好的 Box
vagrant box remove # 移除 Box
# 虚拟机相关命令
vagrant init BOX # 初始化一个 Vagrantfile 文件
vagrant status [VM_NAME] # 虚拟机状态,默认查看所有的,可以指定只查看一个
vagrant destroy [VM_NAME] # 删除虚拟机,默认删除所有的,可以指定名字(VM_NAME)删除指定的虚拟机
vagrant up [VM_NAME] # 启动虚拟机,默认启动所有的,指定虚机名字(VM_NAME)启动指定的
vagrant down [VM_NAME] # 关闭虚机。默认关闭所有,指定虚机名字(VM_NAME)关闭指定的
vagrant suspend [VM_NAME] # 挂起虚机。默认关闭所有,指定虚拟机名字(VM_NAME)挂起指定的
vagrant resume [VM_NAME] # 从挂起状态恢复运行。默认恢复所有,指定虚拟机名字(VM_NAME)恢复指定的
vagrant reload [VM_NAME] # 从挂起状态恢复运行。默认恢复所有,指定虚拟机名字(VM_NAME)恢复指定的
示例:
vagrant box add centos/7 # 从官网下载指定的 Box,命令执行后会提示你选择虚拟机型号
vagrant box add CentOS-6-x86_64-Vagrant-1708_01.VirtualBox.box --name centos/6 # 添加离线 vbox
添加离线 vbox 时的可用选项有:
--checksum:校验和的值
--checksum-type:校验和的类型,可以是 md5、sha1 或 sha256
–-name:离线添加的 box 在 Vagrant 中的名字,用于 Vagrantfile 配置文件
3. 示例
1. 打造跨平台的 K8S 学习环境
使用 Vagrant 和 VirtualBox 在本地创建一个开箱即用又可方便定制的分布式开发环境,对 Kubernetes 本身和应用进行更好的测试。
项目的具体描述,可以参考其 中文 ReadMe。
需要准备以下软件和环境:
- 8G以上内存
- Vagrant 2.0+
- Virtualbox 5.0 +
- 提前下载kubernetes1.9.1以上版本的release压缩包
安装方式:
1. 克隆 Git 仓库
git clone https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster.git
2. 下载 Kubernetes(墙)
下面两个压缩包的版本是 1.8,如果需要其他版本可以复制链接后更改链接中的版本部分:
kubernetes-client-linux-amd64.tar.gz
kubernetes-server-linux-amd64.tar.gz
下载完成后,放到仓库对应的 kubenetes-vagrant-centos-cluster 目录下。
3. 安装(墙)
cd kubernetes-vagrant-centos-cluster
vagrant up
如果运行 vagrant up 时发现无法下载 centos/7 的 box,可以手动下载后将其添加到 vagrant 中。
Vagrant - 打造跨平台的一致开发环境的更多相关文章
- [转帖]使用 Vagrant 打造跨平台开发环境
使用 Vagrant 打造跨平台开发环境 https://segmentfault.com/a/1190000000264347 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/p ...
- 使用 Vagrant 打造跨平台开发环境
Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史. 我们可以通过 Va ...
- 使用 Vagrant 打造跨平台开发环境fffff
Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史. 我们可以通过 Va ...
- 使用vagrant一键部署本地php开发环境(二)制作自己的vagrant box
在上篇的基础上 ,我们已经安装好了virtualbox和vagrant,没有安装的话,参照上篇 使用vagrant一键部署本地php开发环境(一) 1.从网易镜像或阿里等等镜像下载Centos7 ht ...
- 使用Vagrant在Windows下部署开发环境
做Web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的Windows版,甚至是一键安装包,但很多时候和Windows环境的相性并不是那么好,各麻烦的问题是实际部署的环境通常是Linux ...
- 利用 WSL 在 Windows下打造高效的 Linux 开发环境
WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...
- 使用vagrant构建你们团队的开发环境
vagrant可以让团队快速搭建统一的开发环境. 搭建vagrant你需要准备三个东西: 1.vagrant安装包 . 2.virtualbox安装包. 3.打包后的vagrant虚拟环境镜像 (ln ...
- 使用vagrant一键部署本地php开发环境(一)
一:我们为什么需要用这玩意 我们在开发中经常会面临的问题:环境不一致,有人用Mac有人用Windos还有几个用linux的,而我们的服务器都是linux. 在我本地是可以的啊,我测了都,没有问题 ...
- 基于 vagrant搭建移动端的开发环境
# 后端开发环境Homestead启动 Homestead 之前,确保 VirtualBox .Vagrant.Git 软件己安装. ## 安装 laravel/homesteadvagrant bo ...
随机推荐
- [2019杭电多校第五场][hdu6630]permutation 2
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6630 题意为求出1-n,n个数的全排列中有多少种方案满足第一位为x,第n位为y,且相邻数字绝对值之差不 ...
- arcgis server地图服务切片(10.4.1)
首先要发布地图服务,过程略 首先,熟悉arcgis server的人应该知道,最直接的切片方式操作方法是在“服务属性”中设置切片,但这种方式可操作性太差,很多设置无法实现,因此不推荐 下面正式开始,打 ...
- 广告URL
讨厌的csdn 广告,百度搜索了一次,csdn cookie广告追了你好几年还有... 把下面的url 重定向127.0.0.1 ,只记录了百度广告,部分阿里的广告,其他还未记录 虽然也用Adblo ...
- 【摘】sizeof实现
注意sizeof是运算符,而非函数 关于sizeof的两个精巧的宏实现. 非数组的sizeof: #defne _sizeof(T) ( (size_t)((T*)0 + 1)) 数组的sizeof: ...
- Ribbon远程调用
Ribbon是客户端的负载均衡机制,它有几种负载均衡机制.默认是轮询,我们也可以自定义规则.通过合理的分配网络请求来减小服务器的压力.项目都是注册到eureka服务器上.通过ribbon去调用其他服务 ...
- java 中的引用类型
GC基本原理 GC (Garbage Collection)的基本原理:将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征 ...
- android中两个不同名称的app不能同时安装
---恢复内容开始--- 两个app,第一个安装后,再安装第二个,会提示安装包损坏或者一切其他问题,但是这个安装包在别的手机可以正常安装,可以是因为以下问题 两个app中,包含有相同名称的provid ...
- linux 修改 rsyncd.conf 配置文件
[root@rsync-server-1 ~]# cat > /etc/rsyncd.conf << EOF #Rsync server #created by sunsky 00: ...
- Firewalld--02 端口访问/转发、服务访问、源地址管理
目录 防火墙端口访问/转发.服务访问.源地址管理 1. 防火墙端口访问策略 2. 防火墙服务访问策略 3.防火墙接口管理 4.防火墙源地址管理 5. 防火墙端口转发策略 防火墙端口访问/转发.服务访问 ...
- MySQL concat函数里面单引号的使用
通过concat拼字符串的时候,如果语句里面需要使用单引号,可以使用两个单引号来代替一个引号