vagrant系列博客(代码片段)

huangz-h huangz-h     2022-12-10     293

关键词:

1. 添加box

从中科大的网站下载了源

http://mirrors.ustc.edu.cn/

vagrant box add [自定义box名字] [镜像文件]

例子: 

vagrant box add ubuntu/14.04 trusty-server-cloudimg-amd64-vagrant-disk1.box

创建通过源创建ubuntu镜像

查看box

vagrant box list 


 

2. 初始化, 启动 连接虚拟机

v初始化

vagrant init base [box]

例子: 通过ubuntu/16.04初始化一个虚拟机

vagrant init ubuntu/16.04

创建虚拟机

vagrant up


 

3. 启动, 停止, 重启, 销毁

查看虚拟机运行的状态: 

vagrant status

停止虚拟机:

vagrant halt

暂停虚拟机

vagrant suspend

恢复虚拟机

vagrant resume

重启虚拟机

vagrant reload

销毁虚拟机

vagrant destroy


 

4. 共享目录

默认的共享目录: 主机当前目录和虚拟机的/vagrant默认共享

/Users/narcisohuang/workspace/vagrant-workspace/centos/ => /vagrant

5. 自定义共享文件夹(暂时跳过)

 看15通过插件实现的nfs格式的共享文件夹.


 

网络配置:

私有网络, 虚拟机不能和主机的其他的应用进行网络的通信

公有网络, 虚拟机拥有一个公网IP, 可以和主机的其他的应用通信

7. 私有网络

通过以下的命令, 设置虚拟的网络为私有网络, 主机上的其他的应用不能访问到虚拟机

config.vm.network "private_network", ip: "127.0.0.1"

8. 公有网络

通过以下配置来实现虚拟机配置一个公有的IP地址, 主机内的其他的应用可以通过公网IP地址访问到虚拟机

config.vm.network "public_network"

由于我是用的是无线网卡, 需要在多个网卡中选择一个网络, 我选择1号网卡, 也就是连接无线网的网卡


 

9. 搭建web服务器

sudo yum install -y httpd


 

10. 重新打包

创建出一个box文件

vagrant package

通过这个box文件可以创建一个虚拟机文件, 再通过虚拟机文件创建出一个虚拟机实例


 

11. 多主机

创建两个主机分别命名为dev和pro

没有设置网络, 两台虚拟机之间是不能通信的

config.vm.define "dev" do |dev|
end

config.vm.define "pro" do |pro|
end

 

12. 多主机网络设置

设置私有网络, 注意私有网络是不能和对外通信的网卡在同一个网络段内

当前我的网络在

192.168.1.103

那么, 创建的私有的虚拟机所处的网络就不能在192.168.1.0/24这个段内

Vagrant.configure("2") do |config|

  config.vm.box = "centos7"

  config.vm.define "dev" do |dev|

    dev.vm.network "private_network", ip: "192.168.2.11"

  end

  config.vm.define "pro" do |pro|

    pro.vm.network "private_network", ip: "192.168.2.12"

  end 

end

创建两个在192.168.2.0/24网段的两个主机, 如果之前已经创建两个主机了, 就需要重新启动虚拟机 vagrant reload


 

13. 多主机多机名

通过dev和pro变量设置hostname, 从而设置虚拟机的主机名

Vagrant.configure("2") do |config|
  config.vm.box = "centos7"
  config.vm.define "dev" do |dev|
    dev.vm.network "private_network", ip: "192.168.2.11"
    dev.vm.hostname = "hzh-dev"
  end
  config.vm.define "pro" do |pro|
    pro.vm.network "private_network", ip: "192.168.2.12"
    pro.vm.hostname = "hzh-pro"
  end 
end 

主机名插件: vagrant-hostmanager

使用国内的源进行安装插件

vagrant plugin install vagrant-hostmanager --plugin-clean-sources --plugin-source https://gems.ruby-china.com/ 

使用插件

vagrant hostmanager

dev虚拟机的主机名为hzh-dev

pro虚拟机的主机名为hzh-pro

可以直接通过主机名连接到另一个虚拟机的网络

hostmanager插件将虚拟机的主机名和网络连接在一起了, 并且将各个虚拟机的主机名和IP地址都写到了各自的配置文件/etc/hosts中

 


 

14. Guest Additions:vagrant-vbguest, 使用插件来修复原来的共享文件夹的错误

为虚拟机安装 Guest Additions, 从而就可以使用默认的共享文件夹的功能了

为dev虚拟机安装增强组建

vagrant vbguest --do install dev

centos 安装的过程中网络问题失败了, 算了, 有更好的方法,  使用nfs插件可以不用安装增强组建就可以实现共享文件, 所以算了, 不弄这个了

 


15. nfs共享目录, 性能更好的共享目录

黑体的部分实现了nfs共享文件夹

# -*- mode: ruby -*-

Vagrant.configure("2") do |config|
  config.vm.box = "centos7"
  # 启用vagrantmanage 插件
  config.hostmanager.enabled = true
  config.hostmanager.manage_guest = true
  config.hostmanager.manage_host = true
  # 设置vbguest不自动更新
  config.vbguest.auto_update = false

  config.vm.define "dev" do |dev|
    dev.vm.network "private_network", ip: "192.168.2.11"
    dev.vm.hostname = "hzh-dev"
    # 配置nfs绑定共享文件
    dev.vm.synced_folder "./app", "/app-data", type: "nfs"
    dev.bindfs.bind_folder "/app-data", "/app",
      force_user: "root", force_group: "root", o: "nonempty"
  end
  config.vm.define "pro" do |pro|
    pro.vm.network "private_network", ip: "192.168.2.12"
    pro.vm.hostname = "hzh-pro"
  end 
end

安装插件

vagrant plugin install vagrant-bindfs --plugin-clean-sources --plugin-source https://gems.ruby-china.com/

vagrant up 

会自动安装bindfs, 需要访问wai 网 加 速 下 载 , 而且要5到10分钟

在dev虚拟机中/app-data目录下创建一个文件, 在主机的Vagrantfile目录下的app目录下也可以看到当前的文件. 说明成功的实现了共享文件.

 

 

 

全网最全的博客美化系列教程07.添加一个分享的按钮吧(代码片段)

全网最全的博客美化系列教程相关文章目录【全网最全的博客美化系列教程】01.添加Github项目链接【全网最全的博客美化系列教程】02.添加QQ交谈链接【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠【全网最... 查看详情

全网最全的博客美化系列教程08.自定义地址栏logo(代码片段)

全网最全的博客美化系列教程相关文章目录【全网最全的博客美化系列教程】01.添加Github项目链接【全网最全的博客美化系列教程】02.添加QQ交谈链接【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠【全网最... 查看详情

全网最全的博客美化系列教程05.公告栏个性时间显示的实现(代码片段)

全网最全的博客美化系列教程相关文章目录【全网最全的博客美化系列教程】01.添加Github项目链接【全网最全的博客美化系列教程】02.添加QQ交谈链接【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠【全网最... 查看详情

全网最全的博客美化系列教程06.推荐和反对炫酷样式的实现(代码片段)

全网最全的博客美化系列教程相关文章目录【全网最全的博客美化系列教程】01.添加Github项目链接【全网最全的博客美化系列教程】02.添加QQ交谈链接【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠【全网最... 查看详情

docker深入浅出系列|容器初体验(代码片段)

...要用Docker事例什么是容器镜像和容器容器与虚拟机的区别Vagrant与Docker的区别Docker引擎和架构Docker的镜像分层VirturalBox和Docker如何搭配使用主体机器如何与客体机器上的容器进行通信环境搭建与实战使用Vagrant管理虚拟机创建Centos7... 查看详情

macos☀️vagrant使用parallelsdesktop安装oracle数据库☀️(代码片段)

Vagrant玩转macOS系列🌲前言❄️一、环境准备❄️1、下载Vagrantbox2、安装Paralles插件3、Vagrant添加box4、配置Vagrantfile5、准备安装介质6、编写Vagrantfile中定义的Shell脚本❤️二、Vagrant启动一键安装Oracle❤️1、😏很简单,... 查看详情

macos☀️vagrant使用parallelsdesktop安装oracle数据库☀️(代码片段)

Vagrant玩转macOS系列🌲前言❄️一、环境准备❄️1、下载Vagrantbox2、安装Paralles插件3、Vagrant添加box4、配置Vagrantfile5、准备安装介质6、编写Vagrantfile中定义的Shell脚本❤️二、Vagrant启动一键安装Oracle❤️1、😏很简单,... 查看详情

博客开发系列(代码片段)

博客开发系列(一) 数据库表的创建两张表:文章类型文章#一篇博客一种分类#一篇博客多种分类fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUser#Createyourmodelshere.classBlogType(models.Model): type_name=models.CharField(max_length=15,verbose_name=... 查看详情

vagrant系列教程:vagrant的安装与初识(转)

...是来说设计模式的,先说说这段时间学到的一个新东西。vagrant,其实之前在用laravel的时候,就知道了这么个东西,一直觉得xampp挺好呀,干 查看详情

django搭建个人博客系列:环境准备及简单的博客系统搭建(代码片段)

之前的Linux环境准备工作,可以参考我之前的博客在Win10下利用VMware安装Ubuntu20.04教程。下面开始构建虚拟环境,以后写多个项目防止污染其他项目环境。1.创建虚拟环境#安装Pythonvenv库sudoapt-getinstallpython3-venv#创建虚拟环境mkdirenvcd... 查看详情

inixdebug,vagrant(代码片段)

查看详情

rubyvagrantfileornek#vagrant(代码片段)

查看详情

vagrant初识(代码片段)

  vagrant是部署虚拟开发环境的工具,他可以简化虚拟机配置,为我们搭建和配置轻量级可重用,可移植的开发环境。他能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境。  vagrant支持VirtualBox,VMware,AWS... 查看详情

vagrant入门(代码片段)

vagrant工具的使用介绍一、认识Vagrant1.1什么是vagrant?1)Vagrant是一款用来构建虚拟开发环境的工具官网地址:https://www.vagrantup.combox下载:http://www.vagrantbox.es2)基于ruby开发3)默认使用Oraclevirtualbox作为虚拟化工具,需要打开机器的... 查看详情

text灯vagrant(代码片段)

查看详情

shdocker和vagrant(代码片段)

查看详情

android单元测试系列-mock之powermock(代码片段)

...1.Private1.1私有变量1.2私有方法2.Final3.StaticAndroid单元测试系列(3)-Mock之Mockito_Chris_166的博客-CSDN博客Android单元测试系列(1)-开篇_Chris_166的博客-CSDN博客这两篇中已经分别介绍过Mockito的使用和局限性,本篇将介绍Pow 查看详情

sh各种vagrant命令(代码片段)

查看详情