Vagrant 可以帮助你在你的电脑上运行其他操作系统,这意味着你可以构建、测试、疯狂折腾而不毁坏你的系统。

我使用 Vagrant 已经很长时间了。我使用几种 DevOps 工具,把它们全安装在一个系统上会搞得很乱。Vagrant 可以让你在不破坏系统的情况下随意折腾,因为你根本不需要在生产系统上做实验。

如果你熟悉 VirtualBox 或 GNOME Boxes,那么学习 Vagrant 很容易。Vagrant 有一个简单而干净的界面用于管理虚拟机。一个名为 Vagrantfile 的配置文件,允许你定制你的虚拟机(称为 “Vagrant 盒子box”)。一个简单的命令行界面让你启动、停止、暂停或销毁你的“盒子”。

考虑一下这个简单的例子。

假设你想写 Ansible 或 shell 脚本,在一个新的服务器上安装 Nginx。你不能在你自己的系统上这样做,因为你运行的可能不是你想测试的操作系统,或者没有所有的依赖项。启动新的云服务器进行测试可能会很费时和昂贵。这就是 Vagrant 派上用处的地方。你可以用它来启动一个虚拟机,用你的脚本来配备provision它,并证明一切按预期工作。然后,你可以删除这个“盒子”,重新配备它,并重新运行你的脚本来验证它。你可以多次重复这个过程,直到你确信你的脚本在所有条件下都能工作。你可以将你的 Vagrantfile 提交给 Git,以确保你的团队正在测试完全相同的环境(因为他们将使用完全相同的测试机)。不会再有“但它在我的机器上运行良好!”这事了。

开始使用

首先,在你的系统上安装 Vagrant,然后创建一个新的文件夹进行实验。在这个新文件夹中,创建一个名为 Vagrantfile 的新文件,内容如下:

Vagrant.configure("2") do |config|config.vm.box = "ubuntu/hirsute64"
end

你也可以运行 vagrant init ubuntu/hirsute64,它将为你生成一个新的 Vagrant 文件。现在运行 vagrant up。这个命令将从 Vagrant 仓库中下载 ubuntu/hirsuite64 镜像。

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/hirsute64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/hirsute64' version '20210820.0.0' is up to date...
==> default: Setting the name of the VM: a_default_1630204214778_76885
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...default: Adapter 1: natdefault: Adapter 2: hostonly
==> default: Forwarding ports...default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...default: SSH address: 127.0.0.1:2222default: SSH username: vagrantdefault: SSH auth method: private keydefault: Warning: Remote connection disconnect. Retrying...default: Warning: Connection reset. Retrying...default:default: Vagrant insecure key detected. Vagrant will automatically replacedefault: this with a newly generated keypair for better security.default:default: Inserting generated public key within guest...default: Removing insecure key from the guest if it's present...default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!

此时,如果你打开你的 Vagrant 后端(如 VirtualBox 或 virt-manager),你会看到你的“盒子”已经有了。接下来,运行 vagrant ssh 登录到“盒子”。如果你能看到 Vagrant 的提示符,那么你就进入了!

~ vagrant ssh
Welcome to Ubuntu 21.04 (GNU/Linux 5.11.0-31-generic x86_64)
* Documentation: <https://help.ubuntu.com>
* Management:   <https://landscape.canonical.com>
* Support:    <https://ubuntu.com/advantage>System information as of Sun Aug 29 02:33:51 UTC 2021System load: 0.01       Processes:        110Usage of /:  4.1% of 38.71GB  Users logged in:     0Memory usage: 17%        IPv4 address for enp0s3: 10.0.2.15Swap usage:  0%        IPv4 address for enp0s8: 192.168.1.20
0 updates can be applied immediately.
vagrant@ubuntu-hirsute:~$

Vagrant 使用“基础盒子”来建立你的本地机器。在我们的例子中,Vagrant 从 Hashicorp 的 Vagrant 目录下载 ubuntu/hirsuite64 镜像,并插入 VirtualBox 来创建实际的“盒子”。

共享文件夹

Vagrant 将你的当前文件夹映射到 Vagrant “盒子”中的 /vagrant。这允许你在你的系统和“盒子”里保持文件同步。这很适合测试 Nginx 网站,通过将你的文件根目录指向 /vagrant。你可以使用 IDE 进行修改,“盒子”里的 Nginx 会提供这些修改。

Vagrant 命令

有几个 Vagrant 命令,你可以用它们来控制你的“盒子”。

其中一些重要的命令是:
·vagrant up:启动一个“盒子”。
·vagrant status:显示当前“盒子”的状态。
·vagrant suspend:暂停当前的“盒子”。
·vagrant resume:恢复当前的“盒子”。
·vagrant halt:关闭当前的“盒子”。
·vagrant destroy:销毁当前的“盒子”。通过运行此命令,你将失去存储在“盒子”上的任何数据。
·vagrant snapshot:对当前的“盒子”进行快照。

试试 Vagrant

Vagrant 是一个使用 DevOps 原则进行虚拟机管理的工具,久经时间考验。配置你的测试机,与你的团队分享配置,并在一个可预测和可重复的环境中测试你的项目。如果你正在开发软件,那么通过使用 Vagrant 进行测试,你将为你的用户提供良好的服务。如果你不开发软件,但你喜欢尝试新版本的操作系统,那么没有比这更简单的方法了。今天就试试 Vagrant 吧!

这篇文章最初发表在 作者的个人博客 上,经许可后被改编。

使用 Vagrant 在不同的操作系统上测试你的脚本相关推荐

  1. Mac上测试Internet Explorer的N种方法

    Internet Explorer及其升级的版本Edge浏览器仅在Windows计算机上运行.如果您拥有Mac设备,并且想在Internet Explorer或Edge上对网站执行跨浏览器测试,那么真 ...

  2. 使用Vagrant部署虚拟分布式开发和测试环境

    同步更新到笔者个人博客,可以访问我的博客查看原文:https://www.rockysky.tech 创建自动化配置开发环境 最近由于最近研究和学习的关系,需要经常配置和搭建多个虚拟机组成的分布式系统 ...

  3. 从Qcheck 1.3 不能在不同操作系统上运行问题(chro124、chro342)说开来------

    [本文重在技巧学习,授人以鱼,不如授人以渔!!!] 因为公司项目需要对带宽占用进行测试, 最近看电子工业出版社<网络管理工具使用详解>就qcheck  1.3 不能在不同的操作系统之间运行 ...

  4. linux semaphore,在CentOS 7操作系统上安装Semaphore的方法

    本文介绍在CentOS 7操作系统上安装Semaphore的方法,安装完后就可以使用Semaphore来管理Ansible Web UI了. 一.安装MariaDB数据库和git 2.x参考文章 1. ...

  5. 三星s20Android11怎么退回10,三星已经开始在GALAXY S20+上测试安卓11系统

    原标题:三星已经开始在GALAXY S20+上测试安卓11系统 Galaxy S20+什么时候会推出安卓11的GALAXY S20+?三星还没用明确发布这款手机的确切时间.但是,制造商显然正在测试新版 ...

  6. QGIS与国产操作系统兼容性测试(Deepin、优麒麟、中标麒麟)

    三款国产操作系统使用初步体验一文从操作系统易用性.生态完整性.软件包获取难易程度等方面考察其是否满足日常办公需求.然而对我来说,QGIS是日常最常用的软件之一, QGIS与操作系统的兼容性尤其重要,于 ...

  7. 华为主题开发分享-在windows 11操作系统上识别不到P50等华为手机的解决方案

    在开发华为手机主题时,我们都是采用Them studio进行实际测试,无它,官方工具的"同步"功能实在是好用.一键就能将主题推到手机上进行测试,高效方便. 但对于有的老款手机比如p ...

  8. javacv录制桌面视频_免费在任何操作系统上录制桌面视频

    javacv录制桌面视频 Sometimes screen shots just aren't enough to explain how to do something or to show the ...

  9. Tunnelblick mac是一款在主机操作系统上运行VP~解决方案的跳板软件。

    Tunnelblick mac是一款在主机操作系统上运行VP~解决方案的跳板软件,Tunnelblick Mac版是一款非常实用的网络工具,该软件绿色小巧.功能强大,它设置了一个控制器项目菜单栏,让您 ...

最新文章

  1. pythonsys模块介绍_sys 模块介绍 - Clarkhedi的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. c语言数组与指针浅析
  3. linux中如何设置用户自己的工作环境,Linux系统下设置用户登录环境
  4. mysql简单指令_Mysql基本指令
  5. SQLServer如何在批量插入后,获取批量插入的自增列的值
  6. webp格式图片如何简单快速转换成JPG、PNG格式
  7. R语言混合效应(多水平/层次/嵌套)模型及贝叶斯实现技术
  8. 神经网络 II:神经元模型
  9. 云计算是什么,阿里云提供哪些云服务
  10. 在CAD中求出多条线段的线段总和
  11. LVS-NAT基于NFS存储部署Discuz
  12. uc手机浏览器 手机模拟_移动端页面调试工具——UC浏览器开发者版
  13. 基于强化学习工具箱的自适应巡航控制系统
  14. LaTex 文章正文footnote和表格的footnote合并计数
  15. 为什么c语言排在第一位,c语言我排第几个
  16. 将 PDF 文件拆分为多个同样页数 pdf 文件的 Windows Powershell 脚本
  17. DSC测试仪器校正及检验
  18. EMC设计的四大技巧
  19. react中 ajax跨域请求
  20. 跨专业上海理工大学计算机考研,跨考难度低,种类多的专业,你知道几个?

热门文章

  1. Keras vs PyTorch,哪一个更适合做深度学习?
  2. 12岁上中科大,17岁哈佛博士,31岁成哈佛教授,学神认识一下?
  3. python模块学习---mechanize(模拟浏览器)
  4. 大TTT需要复习的课件PPT以及大作业完成链接
  5. 计算机视觉方向简介 | 图像拼接
  6. 卷起来了,写了一套Tensorflow和Pytorch的教程
  7. 笔记 | 深入理解深度学习语义分割
  8. YOLOv5在最新OpenVINO 2021R02版本的部署与代码演示详解
  9. PrestaShop 网站后台配置(六)
  10. 大数据在犯罪预防中有独特价值