vagrant 一款快速创建虚拟机单工具,方便本地开发环境搭建,也可以公司共享同样的环境。帮你解决了,虚拟机的网络问题,既可以和主机互通 又可以上网 (仅主机host-only网络 (让ip固定),网络地址转换(nat) (能够上网)),帮小白解决网络问题。我曾经也吃过好多的亏。

安装virtualbox

具体安装包请直接从官网下载:

https://www.virtualbox.org

安装 vagrant

https://www.vagrantup.com/

vagrant 常用命令

 1vagrant -v
 2vagrant box list  //查看目前有的box
 3vagrant box add  //新增一个box
 4vagrant box remove   //删除指定box
 5vagrant init  初始化配置 vagrant file
 6vagrant up  启动虚拟机
 7vagrant ssh   ssh登录虚拟机
 8vagrant suspend  挂起虚拟机
 9vagrant reload    //重启虚拟机
10vagrant reload --provision //重启配置,
11vagrant halt       //关闭虚拟机
12vagrant status     //查看虚拟机状态
13vagrant destroy    //删除虚拟机
14vagrant box add {title}  {url box地址}

box 下载,添加本地box

1vagrant box add {title} {url} 
2vagrant init {title} 
3vagrant up
  1. 下载box http://www.vagrantbox.es/

  2. 在box 目录下载地址

1vagrant box add ubuntu1404  ubuntutu1404.在box 
2#vagrant box add {title}  {url box地址}
3vagrant box list

Vagrantfile配置

  • 初始化配置文件

    1# 新建一个目录
    2vagrant init {title} 
    3# 就会生成  Vagrantfile  文件
    
  • 修改配置Vagrantfile

     1//本机可以用这个ip 来访问这个虚拟机了
     2config.vm.network "private_network", ip: "192.168.100.99"
     3//共享目录
     4config.vm.synced_folder "/Users/maozhongyu/code", "/home/www"
     5
     6//端口映射 虚拟机的80端口用 本机的8888端口就可以访问, 一般不用
     7config.vm.network "forwarded_port", guest: 80, host: 8888 ,id: 'nginx'    
     8config.vm.network "forwarded_port", guest: 8888, host: 8889 ,id: 'apache'    
     9
    10//如果同时要访问我的虚拟机的内容,那么就要配置 公有网络了。
    11// vb.gui = true  #可以方便排错
    
  • 启动、连接、重启配置

    1vagrant up   # 启动
    2vagrant ssh  #连接
    3vagrant reload --provision #重启配置
    

Vagrantfile demo

单节点

 1# -*- mode: ruby -*-
 2# vi: set ft=ruby :
 3
 4Vagrant.configure("2") do |config|
 5  config.vm.box = "ubuntu22"
 6  config.vm.network "private_network", ip: "192.168.56.10"
 7   config.vm.synced_folder "/Users/maozhongyu/code", "/home/www"
 8   config.vm.provider "virtualbox" do |vb|
 9	vb.name="vagrant_ubuntu"
10	vb.cpus = 1
11        vb.memory = 2048
12   end
13end

多节点

 1# -*- mode: ruby -*-
 2# vi: set ft=ruby :
 3
 4Vagrant.configure("2") do |config|
 5
 6  config.vm.define "k8s-01" do |master|
 7    master.vm.box =  "ubuntu2204"
 8    master.vm.provider "virtualbox" do |vb|
 9      vb.memory = 2048
10      vb.cpus = 2
11    end
12    master.vm.network "private_network", ip: "192.168.56.80"
13    master.vm.synced_folder "/Users/mac/code", "/home/www"
14    master.ssh.insert_key = false
15    master.vm.hostname = "master"
16  end
17
18  config.vm.define "k8s-02" do |node1|
19    node1.vm.box =  "ubuntu2204"
20    node1.vm.provider "virtualbox" do |vb|
21      vb.memory = 4096
22      vb.cpus = 2
23    end
24    node1.vm.network "private_network", ip: "192.168.56.81"
25    node1.vm.synced_folder "/Users/mac/code", "/home/www"
26    node1.ssh.insert_key = false
27    node1.vm.hostname = "node1"
28  end
29
30  config.vm.define "k8s-03" do |node2|
31    node2.vm.box =  "ubuntu2204"
32    node2.vm.provider "virtualbox" do |vb|
33      vb.memory = 2048
34      vb.cpus = 2
35    end
36    node2.vm.network "private_network", ip: "192.168.56.82"
37    node2.vm.synced_folder "/Users/mac/code", "/home/www"
38    node2.ssh.insert_key = false
39    node2.vm.hostname = "node2"
40 end
41
42end

打包分发

打包出来,可以分享给同事,他们起来这个box 就会和你有同样的环境

1vagrant package --output xxx.box