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

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

[[426363]]

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

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

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

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

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

开始使用

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

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

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

  1. Bringing machine 'default' up with 'virtualbox' provider...
  2. ==> default: Importing base box 'ubuntu/hirsute64'...
  3. ==> default: Matching MAC address for NAT networking...
  4. ==> default: Checking if box 'ubuntu/hirsute64' version '20210820.0.0' is up to date...
  5. ==> default: Setting the name of the VM: a_default_1630204214778_76885
  6. ==> default: Clearing any previously set network interfaces...
  7. ==> default: Preparing network interfaces based on configuration...
  8. default: Adapter 1: nat
  9. default: Adapter 2: hostonly
  10. ==> default: Forwarding ports...
  11. default: 22 (guest) => 2222 (host) (adapter 1)
  12. ==> default: Running 'pre-boot' VM customizations...
  13. ==> default: Booting VM...
  14. ==> default: Waiting for machine to boot. This may take a few minutes...
  15. default: SSH address: 127.0.0.1:2222
  16. default: SSH username: vagrant
  17. default: SSH auth method: private key
  18. default: Warning: Remote connection disconnect. Retrying...
  19. default: Warning: Connection reset. Retrying...
  20. default:
  21. default: Vagrant insecure key detected. Vagrant will automatically replace
  22. default: this with a newly generated keypair for better security.
  23. default:
  24. default: Inserting generated public key within guest...
  25. default: Removing insecure key from the guest if it's present...
  26. default: Key inserted! Disconnecting and reconnecting using new SSH key...
  27. ==> default: Machine booted and ready!

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

  1. ~ vagrant ssh
  2. Welcome to Ubuntu 21.04 (GNU/Linux 5.11.0-31-generic x86_64)
  3.  
  4. * Documentation: <https://help.ubuntu.com>
  5. * Management: <https://landscape.canonical.com>
  6. * Support: <https://ubuntu.com/advantage>
  7.  
  8. System information as of Sun Aug 29 02:33:51 UTC 2021
  9.  
  10. System load: 0.01 Processes: 110
  11. Usage of /: 4.1% of 38.71GB Users logged in: 0
  12. Memory usage: 17% IPv4 address for enp0s3: 10.0.2.15
  13. Swap usage: 0% IPv4 address for enp0s8: 192.168.1.20
  14.  
  15. 0 updates can be applied immediately.
  16.  
  17. 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 吧! 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2018-02-07 11:15:07

Vagrant使用问题

2020-10-26 09:00:00

LinuxVagrant操作系统

2010-04-30 17:53:29

2013-06-10 23:23:29

操作系统OS X

2021-07-28 15:59:09

苹果 iOS系统

2009-12-14 17:36:18

2018-01-11 09:29:56

DRaaS开发操作系统

2010-04-15 15:21:43

Unix操作系统

2010-04-15 17:21:40

Unix操作系统

2014-05-29 11:14:35

2018-01-03 08:56:31

谷歌Fuchsia操作系统

2012-02-20 23:02:15

Linux

2012-05-03 08:08:34

Linux摄像头

2010-03-04 15:06:39

Python CGI环

2009-03-10 17:43:54

Linux操作系统磁盘阵列

2018-03-21 14:23:39

vagrant测试环境

2010-01-06 15:36:30

Linux操作系统

2009-12-15 17:16:49

免费在线操作系统

2017-05-25 10:58:08

HBase数据库操作系统

2010-04-19 15:11:25

Unix操作系统
点赞
收藏

51CTO技术栈公众号