HelloVagrant(一):安装Vagrant

213 阅读4分钟

我们计划在我的Linux环境中安装Vagrant,并且使用KVM作为Providers。

安装Vagrant

首先在archLinux上,我们只需要输入yay -S vagrant即可完成安装,如果安装出现一些插曲记得运行yay -Syy来更新数据库。当我们在命令行输入vagrant --version后他打印了版本信息后就代表我们安装成功了。

image.png

对于其他版本的安装方式,可以参考官方文档进行安装,注意目前对于macOS是不再支持arm架构的。对于windows可能需要进行一些额外的操作,不妨进行百度或者询问ChatGPT。接下来我们需要给他配置一个Provider使其可以支持KVM。

配置KVM Provider

Vagrant本身是一个管理虚拟机环境的工具,它被设计为独立与任何的虚拟化平台的,当然官方在开源环境推荐使用VirtualBox,在生产环境推荐使用vmware。但是由于我们采用linux环境,因此选用了KVM作为Provider。首先我们需要保证linux中的KVM是正常工作的,其次我们需要安装vagrant的provider插件。

通过vagrant plugin install vagrant-libvirt命令安装kvm的provider插件。

其次可以通过vagrant plugin install vagrant-mutate命令安装将vargrant box转换为不同provider的插件。

注意安装的过程需要一段时间,建议可以通过科学上网的方式来加快安装时间。

验证libvirt是否可用

Vagrant提供了一个类似Docker Hub的镜像仓库,我们可以通过Discover Vagrant Boxes - Vagrant Cloud来访问并获取libvirt支持的box,这里我选用最基本的centos。 接下来我们在终端打开一个空的工作目录(所有与该虚拟机相关的配置和数据都会保存在这里),然后运行如下命令vagrant init centos/7

image.png

接下来我们会发现目录生成了一个Vagrantfile的配置文件,稍后我们回注重阐述这个配置文件的格式和作用,接下来我们就要通过这个配置文件来启动centos/7的虚拟机了:运行vagrant up --provider=libvirt命令

vagrant up --provider=libvirt 

Bringing machine 'default' up with 'libvirt' provider...  
==> default: Box 'centos/7' could not be found. Attempting to find and install...  
   default: Box Provider: libvirt  
   default: Box Version: >= 0  
==> default: Loading metadata for box 'centos/7'  
   default: URL: https://vagrantcloud.com/centos/7  
==> default: Adding box 'centos/7' (v2004.01) for provider: libvirt  
   default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/libvirt.box  
Download redirected to host: cloud.centos.org  
   default: Calculating and comparing box checksum...  
==> default: Successfully added box 'centos/7' (v2004.01) for 'libvirt'!  
==> default: Uploading base box image as volume into Libvirt storage...  
==> default: Creating image (snapshot of base box volume).  
==> default: Creating domain with the following settings...  
==> default:  -- Name:              centos7_default  
==> default:  -- Description:       Source: /home/jaken/vagrant/centos7/Vagrantfile  
==> default:  -- Domain type:       kvm  
==> default:  -- Cpus:              1  
==> default:  -- Feature:           acpi  
==> default:  -- Feature:           apic  
==> default:  -- Feature:           pae  
==> default:  -- Clock offset:      utc  
==> default:  -- Memory:            512M  
==> default:  -- Base box:          centos/7  
==> default:  -- Storage pool:      default  
==> default:  -- Image(vda):        /var/lib/libvirt/images/centos7_default.img, virtio, 41G  
==> default:  -- Disk driver opts:  cache='default'  
==> default:  -- Graphics Type:     vnc  
==> default:  -- Video Type:        cirrus  
==> default:  -- Video VRAM:        16384  
==> default:  -- Video 3D accel:    false  
==> default:  -- Keymap:            en-us  
==> default:  -- TPM Backend:       passthrough  
==> default:  -- INPUT:             type=mouse, bus=ps2  
==> default: Creating shared folders metadata...  
==> default: Starting domain.  
==> default: Domain launching with graphics connection settings...  
==> default:  -- Graphics Port:      5900  
==> default:  -- Graphics IP:        127.0.0.1  
==> default:  -- Graphics Password:  Not defined  
==> default:  -- Graphics Websocket: 5700  
==> default: Waiting for domain to get an IP address...  
==> default: Waiting for machine to boot. This may take a few minutes...  
   default: SSH address: 192.168.121.122:22  
   default: SSH username: vagrant  
   default: SSH auth method: private key  
   default:    
   default: Vagrant insecure key detected. Vagrant will automatically replace  
   default: 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!  
==> default: Rsyncing folder: /home/jaken/vagrant/centos7/ => /vagrant

经过漫长的等待,期间vagrant会根据我们上面设置的配置文件,对虚拟机相关运行参数进行初始化,上面的配置文件是通过ruby语言编写的。 注意上面的up命令中我们加入了--provider=libvirt命令,这意味这我们指定了提供者为kvm,可以通过设置环境变量VAGRANT_DEFAULT_PROVIDER=libvirt来修改默认的Provider,其实在我们的机器上即便不添加这个命令他也会自动选中libvirt的

最后我们可以通过vagrant status查看该虚拟机的运行状态,同时我们也可以在KVM管理界面中看到在运行的虚拟机了:

image.png

虚拟机启动后我们需要连接到该虚拟机的终端中,根据上面创建时打印的日志,我们发现vagrant已经为我们配置了ssh,其中用户名为vagrant,同时也打印了IP地址,我们可以通过ssh连接到刚刚创建的虚拟机中。当然还有一个更简单的办法通过命令:vagrant ssh即可连接到虚拟机中

image.png