如何在 Linux 上安装 Vagrant

在本教程中,我们将了解如何在 Linux 操作系统上安装 Vagrant。 安装 Vagrant 非常简单! 您所要做的就是前往 Vagrant 下载页面,为您的 Linux 发行版获取合适的预编译二进制版本,然后像通常安装其他应用程序一样安装它。 您还可以从默认存储库安装 Vagrant。 在这里,我列出了在你的 Linux 机器上安装 Vagrant 的所有可能方法。

1. 在 Linux 上安装 Vagrant

Vagrant 在大多数 Linux 和 Unix 发行版的官方存储库中都可用。 所以我们可以使用默认的包管理器安装 vagrant。

例如,运行以下命令在 Debian、Ubuntu、Linux Mint 上安装 Vagrant:

$ sudo apt install vagrant

在 Fedora:

$ sudo dnf install vagrant

在 SUSE/openSUSE 上:

$ sudo zypper install vagrant

存储库中的官方版本可能已经过时了。 如果您想要最新版本,请转到 Vagrant 官方下载页面 并为您的 Linux 操作系统下载最新的二进制文件。

例如,如果您使用 Debian 和其他基于 Debian 的系统,例如 Ubuntu,只需下载 .deb 版本。 在编写本指南时,最新版本是 2.2.10。 它适用于 32 位和 64 位架构。

下载 .deb 文件后,转到下载部分并安装它,如下所示:

$ sudo apt install gdebi
$ sudo gdebi vagrant_2.2.10_x86_64.deb

在这里,我使用的原因 “gdebi” 是因为它会自动安装必要的依赖项。

如果你已经下载了 .rpm 文件,您可以使用以下命令安装它:

$ sudo dnf localinstall vagrant_2.2.10_x86_64.rpm

或者,

$ sudo yum localinstall vagrant_2.2.10_x86_64.rpm

2. 安装管理程序

安装 Vagrant 后,您需要安装任何虚拟化管理程序,对于 example VirtualBox 或 KVM。 因为,Vagrant 不是一个独立的虚拟化软件。 它只是其他虚拟化应用程序的包装器和前端。

Vagrant 最初是为 VirtualBox. 从 1.1 版本开始,vagrant 团队扩展了对其他流行虚拟化软件和服务器环境的支持,包括 Aws、Azure、GCE、Docker、KVM、Proxmox、Openstack、Openvz、VMware 等等。 您可以查看支持的提供者/环境的完整列表 这里.

出于本指南的目的,我将使用 Oracle VirtualBox. 因为,安装 Virtualbox 很容易,而且 Vagrant 使用 VirtualBox 作为默认提供者。

安装 VirtualBox 在 Debain、Ubuntu、Linux Mint 上,运行以下命令:

$ sudo apt install virtualbox

要在 Red Hat、CentOS 上安装 Virtualbox, Fedora, 跑:

$ sudo dnf install virtualbox

要在 SUSE/openSUSE 上安装 Virtualbox,请运行:

$ sudo zypper install virtualbox

如果您更喜欢使用 KVM,可以按照以下指南进行安装。

  • 在 CentOS 8 服务器上安装和配置 KVM
  • 在 Ubuntu 20.04 Headless Server 中安装和配置 KVM
  • 在 OpenSUSE Tumbleweed 中安装和配置 KVM

3.验证Vagrant安装

要验证是否正确安装了 Vagrant,只需在终端不带任何选项的情况下运行它:

$ vagrant

它将返回 Vagrant 帮助部分。

Usage: vagrant [options] <command> [<args>]

    -h, --help                       Print this help.

Common commands:
     box             manages boxes: installation, removal, etc.
     cloud           manages everything related to Vagrant Cloud
     destroy         stops and deletes all traces of the vagrant machine
     global-status   outputs status Vagrant environments for this user
     halt            stops the vagrant machine
     help            shows the help for a subcommand
     init            initializes a new Vagrant environment by creating a Vagrantfile
     login           
     package         packages a running vagrant environment into a box
     plugin          manages plugins: install, uninstall, update, etc.
     port            displays information about guest port mappings
     powershell      connects to machine via powershell remoting
     provision       provisions the vagrant machine
     push            deploys code in this environment to a configured destination
     rdp             connects to machine via RDP
     reload          restarts vagrant machine, loads new Vagrantfile configuration
     resume          resume a suspended vagrant machine
     snapshot        manages snapshots: saving, restoring, etc.
     ssh             connects to machine via SSH
     ssh-config      outputs OpenSSH valid configuration to connect to the machine
     status          outputs status of the vagrant machine
     suspend         suspends the machine
     up              starts and provisions the vagrant environment
     upload          upload to machine via communicator
     validate        validates the Vagrantfile
     version         prints current and latest Vagrant version
     winrm           executes commands on a machine via WinRM
     winrm-config    outputs WinRM configuration to connect to the machine

For help on any individual command run `vagrant COMMAND -h`

Additional subcommands are available, but are either more advanced
or not commonly used. To see all subcommands, run the command
`vagrant list-commands`.
        --[no-]color                 Enable or disable color output
        --machine-readable           Enable machine readable output
    -v, --version                    Display Vagrant version
        --debug                      Enable debug output
        --timestamp                  Enable timestamps on log output
        --debug-timestamp            Enable debug output with timestamps
        --no-tty                     Enable non-interactive output

你也可以 -H 或者 – 帮助 参数以调出帮助部分。

$ vagrant --help

[Or]

$ vagrant -h

要获取单个命令的帮助,请运行:

$ vagrant <COMMAND-NAME> -h

要查看 Vagrant 版本,请运行:

$ vagrant version

它将返回当前安装的版本和最新的可用版本。

Installed Version: 2.2.10
Latest Version: 2.2.10
 
You're running an up-to-date version of Vagrant!

或者,

$ vagrant -v
Vagrant 2.2.10

4.升级流浪者

如果您使用发行版的包管理器从官方存储库安装了 Vagrant,您可以通过更新系统简单地将 Vagrant 升级到更新版本。 例如,在基于 Debian 的系统上,以下命令会将 Vagrant 更新到更新版本:

$ sudo apt update
$ sudo apt upgrade

在基于 RPM 的系统上,例如 RHEL、CentOS,执行以下操作:

$ sudo yum update

或者,

$ sudo dnf update

在 SUSE/openSUSE 上:

$ sudo zypper update

如果您手动下载并安装了 Vagrant,只需 下载新版本 从官方 Vagrant 下载页面并按照描述进行安装 “安装流浪者” 上一节。

新安装程序将正确覆盖和删除旧文件。 建议在升级过程中不要运行其他 Vagrant 进程。

5. Vagrant 故障排除

如果您在同一台主机上运行多个虚拟机管理程序,则在启动 VM 时可能会遇到如下错误:

There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", <ID of the VM>, "--type", "headless"]

Stderr: VBoxManage: error: VT-x is being used by another hypervisor (VERR_VMX_IN_VMX_ROOT_MODE).
VBoxManage: error: VirtualBox can't operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot
(VERR_VMX_IN_VMX_ROOT_MODE)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

发生此错误是因为另一个管理程序,对于 example KVM,目前正在使用中。 要修复此错误,您可能需要暂时将该虚拟机管理程序列入黑名单。

使用命令查找 KVM 模块:

$ lsmod | grep kvm

如果您的主机系统是 Intel,您将获得以下输出:

kvm_intel             282624  0
kvm                   663552  1 kvm_intel

如果是 AMD,你会得到这个:

kvm_intel             282624  0
kvm                   663552  1 kvm_amd

现在使用命令阻止 KVM 模块:

$ echo 'blacklist kvm-intel' >> /etc/modprobe.d/blacklist.conf

如果您的 CPU 是 AMD,请在上述命令中键入“kvm-amd”。

重新启动系统,然后再次尝试运行 Vagrant。 这次 VM 将毫无问题地启动。

就是这样。 我们已经在 Linux 上成功安装了 Vagrant。 查看以下文章以了解如何使用 Vagrant 设置虚拟化环境以及如何使用 Vagrant 创建和管理虚拟机。

  • Vagrant 教程 – Vagrant 入门