热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

vagrant的介绍与使用

什么是vargrant?vagrant是一个构件虚拟开发环境的工具。他用于创建部署虚拟的开发环境;白话:使用vagrant来创建和管理虚拟机的,而装虚拟机的文件由运维组对开发环境做

什么是vargrant?

vagrant是一个构件虚拟开发环境的工具。他用于创建部署虚拟的开发环境;

白话:使用vagrant来创建和管理虚拟机的,而装虚拟机的文件由运维组对开发环境做的一个box的镜像。 

这样做的目的,省去了我们搭建开发环境,直接装一个虚拟机,把正在使用的开发环境的镜像还原进去。 

当然使用vagrant最主要解决的一个问题就是,让开发环境同步。“代码在我机子上运行没有问题”这种说辞将成为历史。

看下图,其中,第一种是直接在物理机上装 Hypervisor,然后再该层上安装我们自己的虚拟机,第二种是先在物理机上装任意一个操作系统,然后在此基础上安装 Hypervisor,再然后再该层上安装我们自己的虚拟机,我们大部分用 Vmware 都是第二种,Vagrant就是第一种,微软自带的hyper-v ;

 

vagrant 的构成



  • base box:vagrant使用的基础镜像文件,可以理解为Vagrant中使用的Linux的镜像文件;

  • providers:镜像文件安装在哪个虚拟机上,vagrant 必须依赖于 Provide,Provide有:vmware、virtualbox、hyper-v,其中,vmware是收费,vartualbox是免费,推荐、hyper-v是微软自带的;

  • provisioners  启动时、启动后,去执行一些shell脚本(如配置网络、安装软件环境等)

 

Vagrant 和 Docker 有什么区别?

Vagrant 对应的是VM层面的,而Docker对应的是Container

 

vagrant安装

1、安装 providers,你有两种选择,vritualbox 和 hyper-v,如果你是window10及以上系统,那么建议使用hyper-v,否则请您使用 vartualbox

  如果是用微软自带的hyper-v,则你需要看:https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/about/;

  如果你是用virtualBox,则你需要安装它,https://www.virtualbox.org/wiki/Downloads;vmware因为收费不推荐;

2、安装vagrant,https://www.vagrantup.com/downloads.html

检查是否成功安装:vagrant --version

 

通过vagrant安装box镜像

离线方式(强烈推荐)

1、下载box文件

vagrant部署环境时,需要一个box文件。如果是在公司里面,可以从他们那里拷一个box文件安装。这样安装的环境与他们是一致的。即模拟了一个开发环境。box文件也可以在网上下载。如:

在 http://www.vagrantbox.es/  或 https://app.vagrantup.com/boxes/search 上找到适合你自己的box,然后将box文件下载下来;

 

2、把box文件添加到虚拟机

新建一个目录,将下载好的box镜像文件丢入里面,在里面用poershell运行(需要管理员身份运行):

//添加box镜像文件到虚拟机中
vagrant box add centosMix CentOS-7.1.1503-x86_64-netboot.box --provider=[hyperv|vertualbox]

 或者你也可以不用下载下来,而是通过:

vagrant box add centosMix https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box

 

 

3、初始化虚拟机box文件

# centosMix 是上面命令中我们自定义的虚拟机名称
vagrant init centosMix

执行完上面的命令之后,可以在目录下看到一个已经生成的vagrantFile文件。这是一个配置文件,里面包含该虚拟机的一些配置信息,其实就几行而已,你可以去掉注释后看到。 

 

4、启动虚拟机

vagrant up --provider=hyperv --color # 注意,安装到hyper上而不是virtualbox中
如果是 用virtualbox虚拟机的话,就写成:
vagrant up --provider=virtualbox --color

 注意输出的信息,一般的,virtualbox的ip为127.0.0.1 端口为2222,而hyperv的ip为其显示的ip,端口是22;

 判断是否成功安装:vagrant status

 

进行完上面步骤后,就可以像使用服务器一样,远程到虚拟机了。可以使用的工具有xshell工具,winscp等工具。

初始安装的时候后,远程的时候,使用的IP是127.0.0.1 端口号是2222(看输出信息知道的)。这些信息可以后续在进行设置。如果嫌麻烦,也可以修改vagrantFile文件之后,在进行安装。默认中的账号密码都为:vagrant

 

在线方式(国内用户不推荐)

 

常用命令

vagrant up

启动或创建(第一次)虚拟机

vagrant stauts

检查虚拟机状态

vagrant ssh

通过ssh连接

 

vagrant ssh-config

查看ssh配置信息

 

vagrant suspend/resume/reload/hat

暂停suspend / 重启resume、重载reload、停止halt(停止的虚拟机需要 up 启动)

vagrant destroy

删除/移除 虚拟机

vagrant destroy -f 强制删除所有虚拟机

 

已经删除的虚拟机,其所在的目录中的 .vagrant 也最好删除掉;

.vagrant 的目录结构

> tree /F
D:.
│ Vagrantfile

└─.vagrant
├─machines 虚拟机目录
│ └─default 我们创建的虚拟机名称,默认为default
│ └─hyperv 我们default虚拟机provider,为 hyperv,即:default虚拟机是通过 hyperv 创建的
│ │ action_configure
│ │ action_provision
│ │ action_set_name
│ │ box_meta
│ │ creator_uid
│ │ id
│ │ index_uuid
│ │ private_key ssh的登陆密钥key
│ │ synced_folders
│ │ vagrant_cwd
│ │
│ └─Virtual Hard Disks 虚拟机的磁盘文件
│ generic-ubuntu2004-hyperv.vhdx

└─rgloader
loader.rb

 

Box 文件目录在哪儿?

一般在 用户目录下的 .vagrant.d 目录中:

C:\Users\用户名\.vagrant.d\

 

C:\Users\用户名\.vagrant.d>tree /F
C:.
│ insecure_private_key
│ setup_version

├─boxes // box就存放在这里
│ ├─hyperv
│ │ └─0
│ │ └─hyperv
│ │ │ info.json
│ │ │ metadata.json
│ │ │ Vagrantfile
│ │ │
│ │ ├─Virtual Hard Disks
│ │ │ generic-ubuntu2004-hyperv.vhdx
│ │ │
│ │ └─Virtual Machines
│ │ box.xml
│ │ D90B1531-23A2-4D41-957F-8593E9356E69.vmcx
│ │ D90B1531-23A2-4D41-957F-8593E9356E69.vmgs
│ │ D90B1531-23A2-4D41-957F-8593E9356E69.VMRS
│ │
│ └─ubuntu
│ └─0
│ └─hyperv
│ │ info.json
│ │ metadata.json
│ │ Vagrantfile
│ │
│ ├─Virtual Hard Disks
│ │ generic-ubuntu2004-hyperv.vhdx
│ │
│ └─Virtual Machines
│ box.xml
│ D90B1531-23A2-4D41-957F-8593E9356E69.vmcx
│ D90B1531-23A2-4D41-957F-8593E9356E69.vmgs
│ D90B1531-23A2-4D41-957F-8593E9356E69.VMRS

├─data
│ │ checkpoint_cache
│ │ checkpoint_signature
│ │ lock.dotlock.lock
│ │
│ └─machine-index
│ index
│ index.lock

├─gems
│ └─2.7.4
├─rgloader
│ loader.rb

└─tmp
boxe1394d60c23f1a8b64cfb37d8591b8a521b31cdf

 

 

vagrantfile文件的写法

 

box的名称为 centos/7

安装后设置其hostname为vagrant-demo

 

安装的box版本为1905.1(注意:如果本地不存在该版本,会从网上拉取下来)

每次配置 vagrantfile 好后,需要重新创建vagrant;

更多配置前往:https://www.vagrantup.com/docs/vagrantfile 查看

 

vagrant的ssh连接

我们可以在 vagrantfile 目录下使用命令 vagrant ssh 来登陆我们的虚拟机而不需要输入用户名和密码,这是为什么?

执行vagrant ssh 命令后,vagrant会找 当前目录的.vagrant目录中的private.key文件,来登陆对应的虚拟机;注意:public.key 在创建linux时被注入到linux中了;

你也可以通过 vagrant ssh-config 来查看当前所在的虚拟机的信息;

 

有些时候,我们需要通过用户名密码来登陆虚拟机中,而vagrant在安装虚拟机时应将使用密码来登陆的功能禁用了,vagrant的本意就是建议我们最好通过private_key来登陆虚拟机,但是我们就像用密码,如何设置?

1、先用 vagrant ssh 登陆我们的虚拟机中(也就是先用 private_key 登陆我们的虚拟机)

2、在虚拟机中的 /etc/ssh/sshd_config 中,将 PermitRootLogin由no改为yes,保存

3、重启sshd服务:sudo service sshd restart

4、完毕,你可以退出,然后使用账号密码(都为vagrant)登陆到虚拟机了;

但是,我们还是建议你在生产环境中使用private_key来登陆到虚拟机中;

 

使用ssh的技巧(推荐设置)

我们输入 vagrant ssh-config 命令,输出的内容是可以被我们的ssh所使用的,也就是说,在任何目录中都能够快速的登陆到我们虚拟机中,而不需要先进入到 vagrantfile 目录中;

 

在  C:\Users\用户名\.ssh\ 目录中,新建一个 config 文件(如果不存在,注意没有文件名后缀),将上面红色框起来的内容复制到 config 文件中,修改 第一行 Host default,default 可以改为你熟悉的名字,比如这里是 hlinux;

这样,你就可以在任何目录中使用  ssh hlinux 来直接登录到虚拟机中了;

注意:hyper-v 新建的虚拟机的ip地址是不固定的,可能会在你重启电脑的时候变动,这时候使用 ssh hlinux 就无法登陆到虚拟机了,记得改ip即可;

 

insecure_private_key

所有创建出来的虚拟机,都可以使用 insecure_private_key 来连接到虚拟机中(vagrant在安装虚拟机的时候创建一个public_key安装在虚拟机中,对应的private_key就是:insecure_private_key  了);

insecure_private_key文件 存在哪里?

C:\Users\用户名\.vagrant.d\ 下

但是,我们并现在并不能通过 insecure_private_key 来连接到虚拟机,因为在你安装虚拟机时,vagrant会自己生成一个 一对private_key 和 public_key,public_key 注入到虚拟机,private_key 替换 insecure_private_key 了,如下图:

每台虚拟机目录中都有自己的 private_key文件:

而我想要的是以后所有创建出来的虚拟机都是用统一的 insecure_private_key 来登录,如何做?要想禁止 vagrant 去生成每个虚拟机自己的 key,就想是用 insecure_private_key,可以在每个 vagrantfile 中添加一句话:

这样,每次通过这个 vagrantfile 来生成虚拟机时,都不会生成自己独有的 key,而是使用统一使用 insecure_private_key 文件来登录到虚拟机中;

 

上图中已经没有 生成替换使用自己的key的信息了;

 

insecure_private_key 对应的 public_key 在虚拟中哪里呢?/home/vagrant/.ssh/authorized_keys,如下图:

 

 

一个vagrantfile创建多台虚拟机并对每个虚拟机单独设置

 

 

上图中配置了需要创建了两台虚拟机,第一台名为 web,且设置hostname和box_version,第二台名为 db,只设置了hostname,box_version将会使用全局的 1905.1 这个版本;

 

使用循环来设置多台虚拟机(更加灵活)

 

 

hyper-v 同步文件夹

 

宿主机的Vagrantfile所在的当前目录同步到虚拟机中的 /vagrant 目录中,同步的类型为smb

下面代码,是适配了 用 virtualbox 和 hyperv 两种provider的文件同步:

 

vagrant box 的操作(重要)

vagrant box 的存放是在:C:\Users\用户名\.vagrant.d\ 下的;

命令:

 

vagrant box list     列出所有已经安装的box

vagrant box add centos/7    下载 centos/7 这个box

vagrant box remove centos/7 [--provider=hyperv]   删除centos/7这个box

 



推荐阅读
  • 项目经理的角色与职责解析
    本文探讨了项目经理的核心职责,结合个人项目管理和PMBOK指南的经验,深入分析了项目管理的基本概念及其与运维、战略规划之间的关系。 ... [详细]
  • 深入理解Dockerfile及其作用
    Dockerfile是一种文本格式的配置文件,用于定义构建Docker镜像所需的步骤。通过使用`docker build`命令,用户可以将Dockerfile中的一系列指令转换成一个可执行的Docker镜像。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 本文详细介绍了如何在Linux系统中使用nslookup命令查询DNS服务器地址,这对于Linux服务器的运维管理是非常重要的基础知识。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • C盘无法格式化的原因及解决方法
    本文探讨了C盘无法格式化的原因,并提供了详细的解决方案,帮助用户顺利进行系统维护。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
author-avatar
mobiledu2502936451
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有