专业的DevOps团队经常在虚拟化环境中部署他们的开发系统。虚拟化允许DevOps团队轻松快速地复制必要的操作系统环境来构建、测试和部署他们的开发系统。这些一次性的虚拟环境显示了在正确理解和管理的情况下,虚拟化是多么的灵活和强大。然而,这种灵活性虽然具有优势,但也会带来一些管理上的困难,Vagrant的目的就是要纠正这些困难。因此,希望本文能帮助您了解Vagrant的强大功能,引导您快速掌握Vagrant的实操技能。
Vagrant是一个开源的、基于命令行的工具,适用于Windows、MacOS和GNU/Linux,它允许以自动化的方式生成可复制和可共享的开发环境。为此,Vagrant通过一个简单的配置文件来创建和配置虚拟机或轻量级容器,这些文件可以轻松地与其他团队成员共享,以确保他们工作的系统的统一性。Vagrant本质上是一个瘦身管理软件,它位于虚拟化管理程序或容器运行时之上,用于虚拟环境上的任何类型的自定义配置。默认情况下,Vagrant使用VirtualBox作为底层虚拟机引擎,不过也可以选择使用VMware Workstation、KVM或Docker代替。
在Ubuntu Server 20.04上安装Vagrant
对于Debian或Ubuntu等发行版,安装过程非常简单,因为Vagrant位于官方存储库中。但是,官方网站上的版本是可用的最新版本,因此最好从官方来源下载软件包,以确保您具有最新的稳定版本。
在终端环境中,首先升级发行版:
$ sudo apt update
$ sudo apt upgrade
我们将使用VirtualBox作为Vagrant的虚拟化管理程序。因此,在安装Vagrant之前,必须先安装VirtualBox。
$ sudo apt install virtualbox
该过程完成后,您需要检查哪个是Vagrant的最新稳定版本。您可以从项目的网站上执行此操作。
目前,Vagrant的最新稳定版本是2.2.14,可以使用下载其Ubuntu的DEB软件包wget。
$ cd /tmp/
$ wget -c https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.deb
下载最新的Vagrant稳定版本后,您可以使用进行安装apt。
$ sudo apt install ./vagrant_2.2.14_x86_64.deb
这将开始安装依赖项和Vagrant本身的过程。之后,您将可以开始使用Vagrant。
例如,使用以下命令检查已安装的版本:
$ vagrant --version
在Debian 10上安装Vagrant
Debian是最受欢迎和最可靠的Linux发行版之一。因此,有必要知道如何在最新的Debian版本上安装Vagrant。
首先,您必须满足VirtualBox依赖性。由于此软件包不在官方存储库中,因此您必须添加Debian的Oracle存储库。因此,打开终端并运行以下命令以安装所需的软件包。
$ sudo apt update
$ sudo apt install software-properties-common
现在,将GPG密钥从存储库导入到系统中。这样可以确保过程的安全,并告诉系统存储库是受信任的。
接下来,通过在/etc/apt/sources.list文件末尾运行以下行来添加存储库:
deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian buster contrib
现在,您可以运行以下命令来安装Vagrant:
$ sudo apt update
$ sudo apt install vagrant
您可以通过运行以下命令检查安装是否成功:
$ vagrant --version
在CentOS 8上安装Vagrant
在CentOS 8的情况下,该过程也很简单,甚至有些相似。首先,您必须安装VirtualBox,它不在发行版的官方存储库中。您可以将其与外部存储库一起安装。
要在CentOS 8存储库上添加VirtualBox,只需运行:
$ sudo dnf config-manager --add-repo=https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
现在,您可以安装VirtualBox软件包:
$ sudo dnf install VirtualBox-6.0
在此过程中,您将必须从存储库接受GPG密钥。接受它将开始该过程。
在系统上安装了VirtualBox之后,继续安装Vagrant的最新稳定版本,但是与上一节不同,我们需要下载CentOS 8的RPM软件包。
为此,可以使用以下命令:
$ sudo dnf install https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.rpm
请记住,当发布新的稳定版本的Vagrant时,该命令将更改,因此请注意它。
然后,您可以通过显示已安装的版本来检查Vagrant是否已正确安装:
$ vagrant --version
正确安装并配置了Vagrant后,您需要定义新项目的放置位置(所谓的“project directory”项目目录)。项目目录的位置由您决定,并且是通过创建将在其中托管项目的新文件夹来定义的。项目目录稍后将具有一个Vargantfile由Vagrant创建的名为配置文件,Vagrant在该文件中存储该项目的所有设置。
继续并创建一个对当前用户具有足够权限的项目目录。
$ mkdir vagrant-project
您可以vagrant-project使用所需的任何名称和位置替换。
然后,进入项目目录。
$ cd vagrant-project
进入目录后,您需要告诉Vagrant这是您要存放项目的位置。为此,请运行vargrant init子命令。
$ vagrant init
初始化后,Vagrantfile将创建一个骨架文件。该文件将定义的内容包括:项目基本目录的位置,运行项目所需的机器和资源的类型,需要安装的软件以及访问方式等。您可以Vagrantfile就像编辑任何文本文件一样进行编辑。
下一步是添加虚拟机,或添加一个由Vagrant调用的框。您可以下载许多预定义的框,也可以从官方目录中查看可用框的列表。
选择了要创建的虚拟机后,只需运行以下命令即可添加它:
$ vagrant box add [box-name]
这将触发下载所选框的图像。在本教程中,我将添加一个Ubuntu 18.04 vagrant框,并使用VirtualBox对其进行实例化。
$ vagrant box add hashicorp/bionic64

盒子是本地存储在装有Vagrant的计算机上的。每个Vagrant项目都使用一个已安装的框作为要从中克隆的基础映像,并且从不实际修改基础映像本身。如果您有两个项目都使用刚添加的同一框,则在一台来宾虚拟机中添加/修改文件不会影响另一台来宾计算机。
要开始使用虚拟机,请运行:
$ vagrant up
这将启动虚拟机。
访问和停止新创建的框
Vagrant允许SSH访问已创建的虚拟机。为此,只需运行:
$ vagrant ssh
这将允许您访问虚拟机的命令行,并在GNU / Linux计算机上执行所有常规操作。
默认情况下,Vagrant将当前目录(vagrant init已完成的目录和所在的Vagrantfile目录)配置为与虚拟机的共享目录。这意味着对于其中的所有文件,虚拟机将能够访问它们。
如果要停止虚拟机,则有以下三种选择:
vagrant suspend:暂停虚拟机,将当前状态保存在硬盘上。该命令vagrant up将立即以停止时的确切状态重新启动计算机。
vagrant halt:执行虚拟机的受控关闭(与关闭物理机相同)。
vagrant destroy:销毁虚拟机及其所有内容。
因此,您可以运行适合自己需求的产品。
使用Vagrant文件配置文件箱
Vagrant的强大之处在于它Vagrantfile可以像普通文件一样进行编辑,并且可以执行许多不同的操作。
要对其进行编辑,可以使用您选择的文本编辑器。
$ nano Vagrantfile
您可以在其中定义的一些典型配置Vagrantfile为:
config.vm.hostname = "example".
使用它可以定义虚拟机的主机名。
在配置部分中,您还可以更改或添加以下参数:
vb.name = [name]
vb.memory = 512
vb.cpus = 2
在这种情况下,我们将分配512Mb的RAM和两个处理器内核。
您还可以添加启动虚拟机时将执行的命令脚本。如果要在虚拟机上执行一次性安装或启动配置,这可能很方便。在该vb.vm.provision "shell"部分下,添加要在虚拟机启动后立即执行的命令。例如:
vb.provision "shell", inline: <<-SHELL
apt-get update
apt-get upgrade
apt-get install apache2 -y
SHELL
虚拟机启动后,这将安装Apache HTTP服务器。如果虚拟机已经启动并正在运行,请通过运行以下命令重新加载它:
$ vagrant reload --provisioning
这样,您将看到该软件包的安装方式。
通常,启动脚本安装所需的工具链并设置内部开发环境可能要复杂得多,因此运行该脚本的每个人都将拥有与您相同的工作环境。
启用网络
虚拟机的一个重要方面是网络,因此在“Vagrantfile查找”config.vm.network或“相似”部分中进行查找。
您有三个网络选项:
端口转发:进行端口映射,以便将到达主机(物理机)上端口的流量重定向到虚拟机上的端口。
专用网络:创建另一个只能从主机访问的专用网络。
桥接网络:使来宾充当主机本地网络中的另一台计算机。
选择适合您的需求的行时,可以取消注释该行或添加以下行:
config.vm.network : bridge_network
保存文件并应用更改,运行:
$ vagrant reload
这样,您可以从一个简单的文本文件配置整个虚拟机。
Vagrant是一个方便的DevOps工具,旨在通过自动提供自定义虚拟机环境来简化开发工作流程。它提供了用于虚拟化的管理界面,您可以在其中通过简单的文本文件配置虚拟机中所需的所有内容。最好的是,该文件可以在您的DevOps团队成员之间共享,这些成员将获得根据您的需求预先配置的虚拟机。
标签:
- Linux服务器