Vagrant基本知识、基本操作
Vagrant基本知识、基本操作
一、介绍
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef 创建自动化虚拟环境。同时,Vagrant也支持其他类型的虚拟机系统,例如 kvm, vmware,甚至是容器系统,例如docker,等等。
可以使用Vagrant来干如下这些事:
- 建立和删除虚拟机
- 配置虚拟机运行参数
- 管理虚拟机运行状态
- 自动配置和安装开发环境
- 打包和分发虚拟机运行环境
二、安装Vagrant
Vagrant 可以使用不同的后端虚拟机,例如 virtualbox,vmware,kvm,qemu 等。
三、安装到Windows
下载 安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载所需的 Boxes :http://www.vagrantbox.es/
首先依次安装 Virtualbox 和 Vagrant,视情况重启系统。
四、准备Boxes
Vagrant 的 box,是一个打包好的单一文件,其中包含了一个完整系统的虚拟机相关数据。
添加box的方法很简单,例如Ubuntu 的box:
vagrant box add ubuntu/xenial64 ubuntu-xenial64-20170503.1.0-virtualbox.box
vagrant box add ubuntu/trusty64 ubuntu-trusty64-20170424.0.0-virtualbox.box
可以直接添加box,vagrant会尝试自动下载:
vagrant box add chef/centos-6.5
或者在初始化新vm时直接指定来源地址:
vagrant init ubuntu/trusty64 https://atlas.hashicorp.com/ubuntu/boxes/trusty64
查看所有已经添加的boxes:
vagrant box list
五、基本操作
首先,需要建立一个工作目录;
cd %HOME%
mkdir -p vms\first-vm
cd vms\first-vm
然后,初始化操作系统:
vagrant init ubuntu/xenial64
启动虚拟机并使用:
vagrant up #启动虚机
vagrant halt #停止虚机
vagrant destroy [-f] #删除虚机
六、Vagrant常用命令
vagrant init [name [url]] # 初始化当前目录到 vagrant 环境
vagrant up # 启动虚拟机
vagrant halt # 关闭虚拟机
vagrant reload # 重启虚拟机
vagrant status # 查看虚拟机运行状态
vagrant destroy [-f] # 销毁当前虚拟机(但不删除Vagrantfile)
vagrant suspend # 挂起当前虚拟机
vagrant resume # 恢复被挂起的vm
vagrant ssh # SSH 登录至虚拟机
vagrant box add ADDRESS # 安装box文件/url到本地
vagrant box list # 列出所有本地已安装的box列表
vagrant box outdated # 检查已安装的box是否有更新的版本
vagrant box remove NAME # 删除某个已安装的box
vagrant package # 打包当前虚拟机环境为box文件以用于分发
vagrant plugin # 安装卸载vagrant插件
vagrant provision # 执行专门的环境初始化脚本
vagrant ssh-config # 输出ssh连接的一些信息
vagrant version # 获取vagrant的版本
七、Vagrantfile
7.1 box
config.vm.box = "ubuntu/xenial64"
指定操作系统。
对于 VirtualBox来说,它提供了 VBoxManage 命令行工具可以针对某个 VM 做很多事,modifyvm 就是一条可以修订 VM 配置参数的子命令。而Vagrant也可以在配置文件 Vagrantfile 中操作 virtualbox 以达到类似的目的。例如:
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "bastion", "--memory", "2048"]
end
7.2 网络设置
默认情况下,vagrant通知provider创建 NAT 类型的网卡,这样虚拟机将能够和主机之间相互通讯,同时VM能够借助宿主机的外网环境直接访问公网。
在这种情况下,我们可以指定VM的端口转发来暴露VM中的应用程序的端口,从而在宿主机上可以直接与该端口进行通信。
config.vm.network "forwarded_port", guest: 80, host: 8080
例如,我们在VM中安装了nginx的话,上面的端口转发设定可以将其暴露为宿主机的 :8080 ,这样我们从宿主机或者内网的其他主机都可以访问VM中的nginx服务了。
7.3 同步文件夹
config.vm.synced_folder "../data", "/vagrant_data"
将宿主机的 VM工作目录/…/data 映射为 VM中的 /vagrant_data。
7.4 使用ruby循环语句建立多个 VMs
(1..3).each do |i|
config.vm.define "node-#{i}" do |node|
node.vm.provision "shell",
inline: "echo hello from node #{i}"
end
end
7.5 替换 VM 的 Locale
一般情况下,SSH会话沿用宿主机控制台的Locale,但你可以通过预定义覆盖它,在会话中总是使用特定的语言:
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |config|
# ...
end
7.6 Provisioning
,Provisioning是一个首次启动时的后初始化点,它发生在 VM 操作系统被安装就绪,并首次启动完成时。你可以编写 Shell 脚本在这个点自动完成你的专属环境初始化动作,例如安装标准服务、安装bash扩展组件(例如git-prompt)、建立必要的工作文件夹和拉取特定的分发包之类。
如果有必要,在今后,即使VM已经完成了首次初始化了,你也可以通过 vagrant up --provision 这样的指令来强制 VM 开机和再次执行 Provisioning 脚本。
在 Vagrantfile 中,典型地可以这样指定 Provioning:
$script = <<-SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: $script
end
也可以指定一个脚本文件,注意我们通过 /vagrant 传递 provision.sh 到 VM 中,而典型的 box 系统中,/vagrant 是在 $PATH 搜索路径中的:
Vagrant.configure("2") do |config|
config.vm.provision "shell", path: "provision.sh"
end
Vagrant基本知识、基本操作的更多相关文章
- vagrant 入门
0.说明 本门所有的操作都是基于mac.windows可做相应调整,大体流程是一样的. 1.什么是vagrant 通俗来讲vagrant是一个通过命令行,来管理虚拟机的工具,vagrant本身并没有提 ...
- Vagrant 总结
引言 本文将讨论Vagrant基础应用,高级应用,基于Vagrant 的虚拟机优化,Vagrant的优势及区别等四部分 参考资料: [阿里云教程中心]Docker学习总结之Docker与Vag ...
- 使用 Vagrant 搭建 Kubernetes 本地测试环境
Vagrant 中文资料 参考资料 Kubernetes 需要一个至少包含三个节点的分布式系统.如果想学习 Kubernetes,或只是在本地搭建测试环境,则可以通过 Vagrant 来简单的实现. ...
- 爬虫基础01-day23
写在前面 上课第23天,打卡: 每天进步一点,开心一点 ^_^ 爬虫 - 基本操作 概要: - 发送Http请求,Python Http请求,requests - 提取指定信息,Python 正则 ...
- SQL server2005学习笔记(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法
在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...
- SQL server学习(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法
在软件测试中,数据库是必备知识,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数据库脱机.联机操作 数据库收缩操作 ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...
- SQL server学习(一)数据库的基本知识、基本操作和基本语法
在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...
- 知识图谱和neo4j的基本操作
一.知识图谱的简介 1.知识图谱是什么 知识图谱本质上是语义网络(Semantic Network)的知识库 可以理解为一个关系图网络. 2.什么是图 图(Graph)是由节点(Vertex)和边(E ...
随机推荐
- Linux性能优化:CPU性能分析工具--vmstat
Blog:博客园 个人 目录 参数说明 输出信息说明 procs memory swap io system cpu 示例 vmstat是Virtual Meomory Statistics(虚拟内存 ...
- TurtleBot 3 & 2i ROS开源实验平台
TurtleBot 3 & 2i ROS开源实验平台,全球更受欢迎的ROS平台. TurtleBot是ROS标准平台机器人,在全球开发人员和学生中深受欢迎.其有3个版本: TurtleBot1 ...
- java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
kafka 与spark集成 序列化问题 sparkConf.set("spark.serializer", "org.apache.spark.serializer.K ...
- Liunx运维(十二)-Liunx系统常用内置命令
文档目录: 一.Liunx内置命令概述 二.LIunx常用内置命令实例 1.help查看内置命令帮助2.查看内置命令使用方法3.":" 占位符4. "." 与s ...
- Java API 操作HBase Shell
HBase Shell API 操作 创建工程 本实验的环境实在ubuntu18.04下完成,首先在改虚拟机中安装开发工具eclipse. 然后创建Java项目名字叫hbase-test 配置运行环境 ...
- cookie和session会话技术
因为http协议是无状态的,也就是说每个客户端访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端状态.会话技术是帮助服务器记住客户端状态的. 一次会话的开始是通过浏览器访问某个 ...
- dotnet高性能buffer
1 前言 我曾经写过<杂谈.netcore的Buffer相关新类型>的博客,简单介绍过BinaryPrimitives.Span<>,Memory<>,ArrayP ...
- 如何实现CentOS服务器的扩容??
Linux的硬盘识别: 一般使用"fdisk -l"命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动 ...
- kioptrixVM3
简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...
- 【原创】Linux虚拟化KVM-Qemu分析(八)之virtio初探
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...