Exploring
首页
  • Java

    • 面向对象的思想OOP
    • 浅谈Java反射原理
    • endorsed覆盖JDK中的类
  • 认证与授权

    • LDAP概念和原理介绍
    • OAuth2介绍
  • Impala

    • Impala 介绍
  • MySQL

    • 关于MySQL的一些面试题
    • 解决MySQL不到中文数据
    • 数据库之事务与实现原理
  • Oracle

    • oracle的表空间,用户管理,表操作,函数
    • oracle的查询、视图、索引
    • plsql简单入门
  • Redis

    • 数据类型详解
    • 跳越表
    • 数据持久化的两种方式
  • 共识算法

    • gossip
  • RPC

    • GRPC初识与快速入门
    • ProtocolBuffer基本语法
  • RabbitMQ

    • RabbitMQ入门程序之HelloWorld
    • RabbitMQ之工作模式
  • Zookeeper

    • Zookeeper一文入门
  • Docker

    • Docker入门初体验
  • Maven

    • 把自己的包到Maven中央仓库
    • Maven之自定义插件
  • Nginx

    • nginx的安装
    • nginx的配置文件
    • nignx 的变量
  • Tomcat

    • Servlet3通过SPI进行注册组件
  • Vagrant

    • vagrant 初始化
    • vagrant 常用配置
    • vagrant 自己制作 box
  • Linux

    • 启动方式 Systemd
    • 后台服务
    • 防火墙与 Iptables
  • 设计模式

    • 设计模式-代理
    • 设计模式-单例模式
    • 设计模式-迭代器
  • 分布式

    • CAP 理论
  • 数据结构

    • 数据结构之堆Heap
    • 数据结构之哈希表
    • 数据结构之队列
  • 计算机网络

    • HTTP与HTTPS详解
    • 浅谈DNS协议
    • ISP中的网络层
  • 算法

    • 常用查找算法及Java实现
    • 常用排序算法及Java实现
    • 迪杰斯特拉算法
  • 操作系统

    • 操作系统之进程调度算法
    • 操作系统之进程通讯IPC
    • 操作系统之内存管理
  • 抓包

    • 生成安卓系统证书
  • 加解密

    • 常见加密算法
    • 公开秘钥基础知识
    • RSA 解析
  • Windows

    • scoop 包管理
    • windows-terminal 配置
    • 增强 PowerShell
归档
Github (opens new window)
首页
  • Java

    • 面向对象的思想OOP
    • 浅谈Java反射原理
    • endorsed覆盖JDK中的类
  • 认证与授权

    • LDAP概念和原理介绍
    • OAuth2介绍
  • Impala

    • Impala 介绍
  • MySQL

    • 关于MySQL的一些面试题
    • 解决MySQL不到中文数据
    • 数据库之事务与实现原理
  • Oracle

    • oracle的表空间,用户管理,表操作,函数
    • oracle的查询、视图、索引
    • plsql简单入门
  • Redis

    • 数据类型详解
    • 跳越表
    • 数据持久化的两种方式
  • 共识算法

    • gossip
  • RPC

    • GRPC初识与快速入门
    • ProtocolBuffer基本语法
  • RabbitMQ

    • RabbitMQ入门程序之HelloWorld
    • RabbitMQ之工作模式
  • Zookeeper

    • Zookeeper一文入门
  • Docker

    • Docker入门初体验
  • Maven

    • 把自己的包到Maven中央仓库
    • Maven之自定义插件
  • Nginx

    • nginx的安装
    • nginx的配置文件
    • nignx 的变量
  • Tomcat

    • Servlet3通过SPI进行注册组件
  • Vagrant

    • vagrant 初始化
    • vagrant 常用配置
    • vagrant 自己制作 box
  • Linux

    • 启动方式 Systemd
    • 后台服务
    • 防火墙与 Iptables
  • 设计模式

    • 设计模式-代理
    • 设计模式-单例模式
    • 设计模式-迭代器
  • 分布式

    • CAP 理论
  • 数据结构

    • 数据结构之堆Heap
    • 数据结构之哈希表
    • 数据结构之队列
  • 计算机网络

    • HTTP与HTTPS详解
    • 浅谈DNS协议
    • ISP中的网络层
  • 算法

    • 常用查找算法及Java实现
    • 常用排序算法及Java实现
    • 迪杰斯特拉算法
  • 操作系统

    • 操作系统之进程调度算法
    • 操作系统之进程通讯IPC
    • 操作系统之内存管理
  • 抓包

    • 生成安卓系统证书
  • 加解密

    • 常见加密算法
    • 公开秘钥基础知识
    • RSA 解析
  • Windows

    • scoop 包管理
    • windows-terminal 配置
    • 增强 PowerShell
归档
Github (opens new window)
  • Docker

  • Maven

  • Nginx

  • Tomcat

  • Vagrant

    • vagrant 初始化
      • 前言
      • 安装
        • 期望的目标
        • 安装 vagrant
        • 测试是否正常安装
      • 配置
        • 自动提示
      • 插件
        • vagrant-hostmanager
        • 自定义插件镜像源
      • 关于WSL2
      • 最后
    • vagrant 常用配置
    • vagrant 自己制作 box
  • Linux

  • DevOps
  • Vagrant
unclezs
2022-05-22
0
目录

vagrant 初始化

# 前言

因为平时在 windows 下都是用 wsl ,所以打算把 vagrant 也弄到这里面来。但是一切并不是那么顺利..,所以记录下。

# 安装

# 期望的目标

  • virtualbox 在 windows 上安装
  • vagrant 在 wsl 上安装
  • 最终效果就是 wsl 上执行 vagrant 的命令,最终得以正常运行。

# 安装 vagrant

我发行版是用的 ubuntu20.04

$ wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2
1
2
3

其他版本可以参考:vagrant 官方各个版本安装文档 (opens new window)

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install vagrant
1
2
3

# 测试是否正常安装

vagrant -h
1

我执行时出现这样的错误:

The executable 'cmd.exe' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.
1
2
3

反正就是 cmd.exe 没有在 PATH 里面啥的。

但是我执行 whereis cmd 的时候又能够找到...,然后一顿搜索各种方案发都是让加环境变量,让配置 PATH 啥的。都没有用。想了下 wsl 是可以执行调用 windows 中的东西的。所以我单独执行了一下,cmd.exe 结果报错是 permission denied...,顿时悟了,文件权限问题啊。ll 看了下 cmd 的权限,发现真的没有可执行权限...。

image-20220522135623936

因为 wsl 默认权限全部是 777,所以配置 wsl 时把文件权限全部重新挂载了一次。配置成文件的掩码为 111 了,导致全部文件只有可读写权限,没有可执行的权限。所以修改下文件掩码 为 011 即可。

/etc/wsl.conf

[automount]
options = "metadata,umask=22,fmask=011"

[filesystem]
umask = 022
1
2
3
4
5
6
7

# 配置

参考官网 (opens new window)

~/.zshrc

export VAGRANT_DEFAULT_PROVIDER=virtualbox
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"
1
2
3
4
5

# 自动提示

vagrant autocomplete install --bash --zsh
1

# 插件

# vagrant-hostmanager

自动配置各个主机名到 /etc/hosts

# 安装
vagrant plugin install vagrant-hostmanager 


# 配置示例
Vagrant.configure("2") do |config|

  config.vm.box = "generic/centos7"
  config.vm.provider "hyperv"

  # 激活hostmanager插件
  config.hostmanager.enabled = true

  # 在宿主机上的hosts文件中添加虚拟机的主机名解析信息
  config.hostmanager.manage_host = true

  # 在各自虚拟机中添加各虚拟机的主机名解析信息
  config.hostmanager.manage_guest = true

  # 不忽略私有网络的地址
  config.hostmanager.ignore_private_ip = false

  config.vm.define 'vm1' do |node|
    node.vm.hostname = 'vm1'
    node.vm.network :private_network, ip: '192.168.42.42'
  end

  config.vm.define 'vm2' do |node|
    node.vm.hostname = 'vm2'
  end
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 自定义插件镜像源

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

# 关于WSL2

因为 WSL2 已经完成虚拟一个轻量级 linux 虚拟机了,所以网络也不和 wsl1 一样了,需要手动配置下防火墙,不然 vagrant ssh 不互通。不过好像也有个叫 virtualbox_WSL2 的插件,好像可以解决这个问题,但是我用的 wsl1 也没啥需求换成 wsl2。没有尝试了。

# 最后

这样实现了 wsl 中使用 vagrant了。

image-20220522140722985

在 GitHub 编辑此页 (opens new window)
上次更新: 2024/02/25, 12:11:11
Servlet3通过SPI进行注册组件
vagrant 常用配置

← Servlet3通过SPI进行注册组件 vagrant 常用配置→

Theme by Vdoing | Copyright © 2018-2024 unclezs
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式