如何在Ubuntu 20.04 LTS上使用Vagrant和VMware Workstation Pro 16?

826 阅读5分钟

Vagrant对虚拟机的作用就像Docker对容器的作用一样。Vagrant是对不同管理程序的包装,如VMware Workstation Pro、VMware Player、VirtualBox、Hyper-V、VMware vSphere等。Vagrant使用一个简单的基于文本的配置文件,称为Vagrantfile,以快速建立一个具有支持的虚拟机提供商/hypervisor之一的开发环境。

Vagrant可以根据你的项目要求快速配置虚拟机,并让它们启动和运行。Vagrant的命令行界面也为虚拟机的管理提供了便利。你可以轻松地通过SSH进入任何Vagrant管理的虚拟机,配置它们,摧毁它们,并在运行中重新创建它们。Vagrant简化了开发项目的虚拟机管理,节省了大量的时间。

Vagrant还使得与其他人分享你的工作变得非常容易。你所要做的就是分享你的项目的Vagrant文件,另一边的人可以用Vagrant重新创建一切。

在这篇文章中,我将告诉你如何在Ubuntu 20.04 LTS上安装最新版本的Vagrant,并配置Vagrant使用VMware Workstation Pro 16作为虚拟机提供者。那么,让我们开始吧。

目录

  1. 你将需要的东西
  2. 安装所需的依赖性
  3. 安装Vagrant
  4. 安装Vagrant VMware工具
  5. 安装Vagrant VMware Desktop Provider Plugin
  6. 开始使用Vagrant VMware Desktop Provider
  7. 总结
  8. 参考资料

您将需要的东西

要设置Vagrant以使用VMware Workstation Pro 16作为虚拟机提供商,您必须在计算机上安装VMware Workstation Pro 16。

如果你在电脑上安装VMware Workstation Pro 16时需要任何帮助,你可以查看以下文章。

  1. 如何在Windows上安装VMware Workstation Pro 16
  2. 如何在Linux上安装VMware Workstation Pro 16

安装所需的依赖性

最新版本的Vagrant可以从Vagrant的官方软件包库中下载。要在Ubuntu 20.04 LTS上添加Vagrant官方软件包库,你必须下载Vagrant官方软件包库的GPG密钥,并将其添加到APT软件包管理器中。 你将需要在命令行中使用curl来完成这项工作。

你可以从Ubuntu 20.04 LTS的官方软件包库中安装curl。

首先,更新APT软件包库的缓存,方法如下。

$ sudo apt update

要安装curl,请运行以下命令。

$ sudo apt install curl -y

curl应该被安装。

安装Vagrant

在本节中,我将向你展示如何从Vagrant的官方软件包库中,在Ubuntu 20.04 LTS上安装最新版本的Vagrant。

首先,下载HashiCorp的GPG密钥,用以下命令将其添加到APT软件包管理器中。

$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

用以下命令将官方Vagrant软件包库添加到APT软件包管理器中。

$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

官方Vagrant软件包库应该被添加。

用下面的命令更新APT软件包库的缓存。

$ sudo apt update

要安装最新版本的Vagrant,请运行以下命令。

$ sudo apt install vagrant -y

APT软件包管理器应该从Vagrant的官方软件包库下载最新版本的Vagrant。

一旦下载了最新版本的Vagrant,它就会把它安装在你的电脑上。

此时,最新版本的Vagrant应该被安装。

一旦Vagrant安装完毕,你应该可以像其他命令一样从命令行中运行vagrant命令。

$ vagrant --version

安装Vagrant VMware工具

要在Vagrant中使用VMware Workstation Pro 16,你必须安装Vagrant VMware Utility

要下载最新版本的Vagrant VMware Utility,请从您最喜欢的网络浏览器导航到链接VMware Utility Downloads | Vagrant by HashiCorp

一旦页面加载完毕,点击Debian> 64-bit,如下面的截图所示。

你的浏览器应该提示你保存vagrant-vmware-utility-*.deb包文件。选择保存文件并点击确定

vagrant-vmware-utility-*.deb包文件应该被下载。

现在,请按以下方式导航到~/Downloads目录。

$ cd ~/Downloads

你刚刚下载的vagrant-vmware-utility_1.0.20_x86_64.deb包文件应该就在这里。

要安装vagrant-vmware-utility_1.0.20_x86_64.deb包文件,请运行以下命令。

$ sudo apt install ./vagrant-vmware-utility_1.0.20_x86_64.deb

APT软件包管理器应该开始安装vagrant-vmware-utility_1.0.20_x86_64.deb软件包。

包文件 vagrant-vmware-utility_1.0.20_x86_64 .deb应该被安装。

安装Vagrant VMware Desktop Provider Plugin

一旦你安装了VagrantVagrant VMware Utility,你可以用以下命令轻松地安装Vagrant插件vagrant-vmware-desktop

$ vagrant plugin install vagrant-vmware-desktop

Vagrant应该从互联网上下载所有需要的文件。它可能需要几秒钟的时间来完成。

这时,Vagrant插件vagrant-vmware-desktop应该已经安装完毕。

开始使用Vagrant VMware桌面提供者。

在本节中,我将向你展示如何启动和运行一个Vagrant项目。我将设置一个简单的Apache 2网络服务器进行演示。那么,让我们开始吧。

用下面的命令创建一个新的项目目录~/http-server(比方说)。

$ mkdir ~/http-server

按以下方式导航到新创建的项目目录。

$ cd ~/http-server

现在,你需要创建一个新的文件Vagrantfile,指定你想用于Webserver的Vagrant Box,并使用Vagrantfile对其进行配置。

Vagrant Box是Vagrant用来创建新虚拟机的基础虚拟机镜像。

从你喜欢的网络浏览器中访问发现Vagrant Boxes - Vagrant Cloud的链接,你应该看到以下页面。

要搜索VMware Workstation Pro 16 Vagrant Boxes,选择vmware作为提供者,输入你要搜索的操作系统的名称,然后按**。**

你应该看到一个与你的搜索查询相匹配的Vagrant Boxes的列表。你可以在你的项目中使用你喜欢的Vagrant Box。你所需要的只是Vagrant Box的名称。

例如,标记的Vagrant Box被称为hashicorp/bionic64。它是一个Ubuntu 18.04 LTS Vagrant Box。

在这篇文章中,我将使用通用/ubuntu2004Vagrant Box来设置webserver。它是一个Ubuntu 20.04 LTS Vagrant Box。

你可以从搜索页面点击任何一个Vagrant Box来查看更多关于该Vagrant Box的信息。

一旦你决定使用哪个Vagrant Box,用以下命令创建一个新的Vagrantfile

$ nano Vagrantfile

Vagrantfile中键入以下几行代码。

Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu2004"
config.vm.provision :shell, path: "bootstrap.sh"
config.vm.synced_folder "html/", "/var/www/html"
config.vm.network :forwarded_port, guest: 80, host: 8080
end

一旦你完成了,按**+X,然后按Y保存Vagrant文件**。

config.vm.box 一行用于配置该项目要使用的Vagrant Box。在本例中,Vagrant Box是generic/ubuntu2004

要启动Vagrant项目,运行以下命令。

$ vagrant up

Vagrant会从网上下载Vagrant Boxgeneric/ubuntu2004,因为你是第一次使用这个Vagrant Box。

下载可能需要一段时间才能完成,这取决于Vagrant Box镜像的大小。

一旦Vagrant Box被下载,Vagrant应该为项目创建所需的虚拟机,配置它们,并启动它们。

在这种情况下,只有1个虚拟机默认被创建。它使用的是vmware_desktop插件,而且它正在**运行,**正如你在下面的截图中看到的。

你可以通过SSH进入该虚拟机,方法如下。

$ vagrant ssh

你应该通过SSH连接到虚拟机的控制台,如下面的截图所示。

你可以在虚拟机中运行任何你想要的命令。

一旦你完成了,你可以退出SSH会话,如下所示。

$ logout

这就是你如何使用Vagrant。

现在,让我们用Vagrant设置一个简单的Web服务器。

首先,在Vagrant项目目录~/http-server中创建一个新的目录html/,方法如下。

$ mkdir HTML

在新创建的html/目录中创建一个index.html文件,如下所示。

$ nano html/index.html

index.html文件中键入以下一行。

完成后,按**+X,然后按Y来保存index.html**文件。

在Vagrant项目目录~/http-server中创建一个bootstrap.shshell脚本,如下所示。

$ nano bootstrap.sh

bootstrap.sh文件中,我将键入所有我希望Vagrant在虚拟机上自动运行的命令,以设置Webserver。在Vagrant的术语中,这被称为配置

bootstrap.sh文件中键入以下几行代码。

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2

完成后,按**+X,然后按Y,保存bootstrap.sh**文件。

nano文本编辑器打开Vagrantfile,如下所示。

$ nano Vagrantfile

Vagrantfile中键入以下几行代码。

Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu2004"
config.vm.provision :shell, path: "bootstrap.sh"
config.vm.synced_folder "html/", "/var/www/html"
config.vm.network :forwarded_port, guest: 80, host: 8080
end

一旦你完成了,按**+X,然后按Y保存Vagrantfile文件**。

这里,config.vm.provision这行用于运行 shell脚本bootstrap.sh(你刚刚写的),以配置虚拟机。

config.vm.synced_folder这行用于将Vagrant项目目录~/http-server中的html/目录挂载到虚拟机的/var/www/html目录。

注意,/var/www/html是Apache 2网络服务器的默认webroot。

最后,config.vm.network这一行用于将虚拟机的80端口转发到你的计算机的8080端口,这样你就可以从你的计算机访问网络服务器。

为了使这些变化生效并运行配置脚本,请运行以下命令。

$ vagrant reload --provision

Vagrant会自动在虚拟机上安装Apache网络服务器,在虚拟机的**/var/www/html目录下挂载~/http-server/html目录,并将80端口转发到你电脑的8080**端口。

正如你所看到的,虚拟机**(guest**)的80端口被转发到你的计算机**(host**)的8080端口。

$ vagrant port

现在,打开一个网页浏览器,访问http://localhost:8080,你应该看到以下页面。这说明一切工作都很正常。

如果你对Vagrant文件做了任何改动(例如,改变了转发端口,添加了新的共享文件夹),如果Vagrant项目已经启动/运行,你需要运行下面的命令,使改动生效。

$ vagrant reload

如果您对配置脚本bootstrap.sh做了任何修改,您需要运行以下命令使修改生效。

$ vagrant reload --provision

如果你想暂停Vagrant项目中使用的所有虚拟机,请运行以下命令。

$ vagrant suspend

如果您想恢复Vagrant项目中使用的暂停的虚拟机,请运行以下命令。

$ vagrant resume

如果您想关闭Vagrant项目中使用的虚拟机,请运行以下命令。

$ vagrant halt

如果你已经关闭了Vagrant项目中使用的所有虚拟机,你可以用以下命令将它们全部唤醒。

$ vagrant up

如果您想永远删除Vagrant项目中使用的所有虚拟机,请运行以下命令。

$ vagrant destroy

即使您完全销毁了Vagrant项目中使用的所有虚拟机,您也可以使用下面的命令来重新创建一切。

$ vagrant up

总结

在这篇文章中,我已经向你展示了如何在Ubuntu 20.04 LTS上安装最新版本的Vagrant。我还向你展示了如何安装Vagrant VMware UtilityVagrant VMware Desktop Provider插件,以配置Vagrant使用VMware Workstation Pro 16作为虚拟机提供者。我向你展示了一个简单的Vagrant例子,你使用Vagrant设置了一个Apache 2网络服务器。