vagrant 系列 博客

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目录下也可以看到当前的文件. 说明成功的实现了共享文件.

相关推荐