贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

vagrant 的介绍与使用

来源:网络转载 时间:2024-01-29 08:07:03

什么是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 <name>

通过ssh连接

vagrant ssh-config

查看ssh配置信息

vagrant suspend/resume/reload/hat <name>

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

vagrant destroy <name>

删除/移除 虚拟机

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

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

.vagrant 的目录结构

> tree /FD:.│  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 /FC:.│  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

标签:vagrant-
下一篇:asdas

SEO小店网站优化 能带来大量精准流量的网站才是好网站,小店网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

汉寿网站排名快速提升 汉寿网络公司快速提升企业网站排名,通过网站优化推广,让汉寿企业网站在搜索引擎的排名长期稳定。 ...

SEO张家界网站优化 能带来大量精准流量的网站才是好网站,张家界网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

16寸平板长宽多少厘米?16英寸板长35.4厘米,宽19.9厘米。16英寸是指笔记本电脑显示屏的对角线长度,16英寸=40.6cm;根据主流笔记本电脑,笔记本电脑的长宽比为16:9,长:13.95英寸(35.4cm),宽:7.84英寸(19.9cm)。16寸电脑长宽多少?16英寸是指笔记本电脑显示屏的对角线长度。根据主流笔记本16:9的比例,16英寸是指笔记本的长度为13.95英寸(35.4厘米)...

苹果平板9代怎么下载软件?再打开ipad9代,上面有光盘驱动的苹果官方应用软件市场~apple store。此时可以打开该软件,在上面查找自己需要可以下载的应用软件app,直接点击下载,直接下载造成后再点安装再试一下。界面找不到的需要在搜索框中直接搜索出去下载安装再试一下。部分软件是需要付费下载,此时先全额支付完成后就是可以去下载了。ipadair4下载app每次都要输入密码?是参照你的设置要求你...

12promax建议更新ios15还是14.8?苹果吧12promax个人建议使用苹果ios14.8。在日常运用测试出来场景中,这个可以发现自己,苹果ios14.8在然后打开一些日常洗护应用方法时,响应速度稍微地比苹果ios15慢了一些。同样的,在打开一些好玩的小游戏时,ios1114.8要比ios815更快那些,只不过只是因为几毫秒的巨大的差距,但是也能猜出,ios815肯定不能能提高那个手机流...

TOP