工欲善其事必先利其器 之 Vagrant(上)

开发环境专题 专栏收录该内容
16 篇文章 0 订阅

关键词:vagrant、虚拟机管理工具、VM

工欲善其事必先利其器 之 Vagrant(上)

前言

上篇文章我们主要学习了 VirtualBox,使用 VirtualBox 搭建虚拟机对于有经验的开发来说,步骤可能比较繁琐一些。那么为了满足“大佬”在新手面前满满的自信感(zhuangbility),我们就有必要学习一下另一款开发利器 Vagrant。


一、Vagrant 概述

Vagrant 是一种用于在单个工作流中构建和管理虚拟机环境的工具。支持多个操作系统凭借易于使用的工作流程和对自动化的关注,Vagrant 缩短了开发环境设置时间,增加了生产价值,并使“works on my machine”的借口成为过去。通俗点说,Vagrant 主要用于创建和部署虚拟化开发环境。

Vagrant 提供易于配置、可复制和可移植的工作环境,建立在行业标准技术之上,并由单一一致的工作流程控制,以帮助最大限度地提高团队的生产力和灵活性。

Vagrant 使用了 VirtualBox、VMware、AWS 等虚拟化技术。同时,Vagrant 使用业界标准的资源调配工具(如shell脚本、Chef或Puppet)实现在虚拟机上自动安装和配置软件。


二、Vagrant 优势


  • 跨平台
  • 可移动
  • 自动化部署无需人工参与

三、搭建你自己的 Vagrant

由于笔者用的是 Windows 操作系统,下面案例将在 Windows 操作系统上搭建。


  • 第一步 下载安装包

    Vagrant for Windows


  • 第二步 安装

    找到下载好的安装包 vagrant_2.2.18_x86_64.msi 双击,按照提示进行操作即可。


  • 第三步 验证

    我们需要在操作系统终端 或 PowerShell 这样的命令行终端,输入 vagrant -v 命令。如何打开终端呢?

    Windows 打开终端的快捷键 win+r 在弹出的窗口输入 cmd 点击 确定 按钮,即可进入命令行终端,传说中的黑窗口。昂~就像下面这样子。

    在这里插入图片描述

    输入 vagrant -v 查看版本

    vagrant -v
    # 输出信息
    Vagrant 2.2.15
    

    看到版本号,说明 Vagrant 已经安装成功。


四、Vagrant 使用入门

使用 Vagrantfile 的方式搭建一个虚拟机。

在线安装

新建一个文件夹,这里我取名为 centos7,可根据自身情况取名。

进入新建的文件夹下面,进入终端执行 vagrant init 命令,会帮你在当前目录下自动生成Vagrantfile。PS:我们也可以手动创建一个Vagrantfile。

vagrant init

修改Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "centos/7"
  config.vm.provider "virtualbox" do |vb|"
      vb.memory = "2048"
      vb.name = "geek"
      vb.cpus = 2
  end
end

大家可能对上面的配置不太了解,下面我给大家详细介绍下。

  • config.vm.box 镜像名称,我们怎么知道有哪些镜像呢?如果是自动下载镜像的方式,我们需要去https://vagrantcloud.com/进行查看。如果是离线安装的方式,镜像名称就是 添加镜像时输入的名称。

  • vb.name 设置虚拟机的名称

  • vb.cpus 允许虚拟机最多占用的CPU资源

  • vb.memory 允许虚拟机使用的最大内存资源

启动虚拟机,从终端我们可以看到,vagrant 会自动从 https://vagrantcloud.com/centos/7 下载镜像文件。如果网络不太好,我们可以自行去这个网址或其他第三方网址下载镜像文件,进行离线安装。

vagrant up

启动过程一般不会有问题,若不幸遇到一些错误。请百度自行解决。

现在我们打开 VirtualBox ,我们可以看到 VritualBox 中已经有了我们刚才新建的虚拟机。

在这里插入图片描述

到这里还没结束,我们怎么连接虚拟机呢?在终端输入 vagrant ssh 即可进入我们创建的虚拟机,是不是很方便。

vagrant ssh 

若 vagrant ssh 无法连接虚拟机,请使用 Vritualbox 登录虚拟机,修改 /etc/ssh/ssh_config 文件中配置项 PasswordAuthentication yes ,重启虚拟机就可以使用 vagrant ssh 进行连接了


离线安装

掌握了在线安装虚拟机之后,离线安装对你来说也是小菜一碟了。

我们将下载好的镜像 virtualbox.box 添加到 vagrant manager

vagrant box add centos/7 D:\virtualbox.box

使用 vagrant box list 查看vagrant管理的镜像

vagrant box list

输出信息,说明我们已经成功将镜像加入vagrant manager 中

centos/7 (virtualbox, 2004.01)

启动虚拟机

vagrant up

后续步骤和在线安装就一模一样了,是不是很简单。


五、Vagrant 常用指令

指令说明备注
vagrant halt优雅关闭
vagrant up正常启动
vagrant ssh使用ssh连接创建的虚拟机
vagrant status查看状态
vagrant destroy删除
vagrant reload

总结

以上就是本文的主要内容,Vagrant 入门讲解完成,本文介绍了什么是 Vagrant ,为什么使用 Vagrant ,怎么搭建 Vagrant ,Vagrant 使用入门。内容相对比较简单,本专栏后续将带你一探 Vagrant 的高级用法,敬请期待哦(*^▽^*)


声明

以上内容均来源于网络,如有错误,请多多包含。


参考文献

Vagrant

vagrantfile


附完整操作记录

PS G:\geek-space\VMs> dir


    目录: G:\geek-space\VMs


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2021/8/9     16:02                centos7


PS G:\geek-space\VMs> cd .\centos7\
PS G:\geek-space\VMs\centos7> vagrant init
==> vagrant: A new version of Vagrant is available: 2.2.18 (installed version: 2.2.15)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
PS G:\geek-space\VMs\centos7> dir


    目录: G:\geek-space\VMs\centos7


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2021/8/9     16:05           3080 Vagrantfile


PS G:\geek-space\VMs\centos7>
PS G:\geek-space\VMs\centos7> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    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: virtualbox
    default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
==> default: Box download is resuming from prior download progress
Download redirected to host: cloud.centos.org
    default:
    default: Calculating and comparing box checksum...
==> default: Successfully added box 'centos/7' (v2004.01) for 'virtualbox'!
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/7' version '2004.01' is up to date...
==> default: Setting the name of the VM: geek
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    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: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Rsyncing folder: /cygdrive/g/geek-space/VMs/centos7/ => /vagrant
PS G:\geek-space\VMs\centos7>
PS G:\geek-space\VMs\centos7> vagrant ssh
[vagrant@localhost ~]$
[vagrant@localhost ~]$ su
Password:
[root@localhost vagrant]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 84701sec preferred_lft 84701sec
    inet6 fe80::5054:ff:fe4d:77d3/64 scope link
       valid_lft forever preferred_lft forever
[root@localhost vagrant]#

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值