• Vagrant入门


    vagrant工具的使用介绍

    一、认识Vagrant

    1.1 什么是vagrant?

    1)Vagrant是一款用来构建虚拟开发环境的工具

    官网地址:https://www.vagrantup.com

    box下载:http://www.vagrantbox.es

    2)基于ruby开发

    3)默认使用Oracle virtualbox作为虚拟化工具,需要打开机器的虚拟机支持

    解决:进入BIOS开启VT虚拟化

    1.2 vagrant常用命令

    # vagrant box add {title} {url}
    # examples:
    vagrant box add cnetos66 c:workvmcentos66_v2.box
    vagrant box add https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
    
    vagrant init [boxname]       # 生成配置文件
    vagrant -h                   # 查看帮助
    vagrant up [name]            # 启动虚拟机
    vagrant ssh [name]           # 连接
    vagrant suspend [name]       # 相当于休眠
    vagrant resume [name]        # 恢复
    vagrant reload               # 修改配置文件后,重启虚拟化开发环境
    vagrant [-f] destory [name]  # 删除虚拟机
    vagrant box list             # 列出当前导入的box
    vagrant box remove [name]    # 移除box
    vagrant up [name]            # 启动machine                 
    vagrant halt [name]          # 关闭machine 
    vagrant status [name]        # 查看machine的状态
    
    # 将虚拟机打包成box
    vagrant package centos66 --output c:workoxcentos_mysql.box
    

    1.3 vagrant配置文件

    https://www.vagrantup.com/docs/vagrantfile/

    1)生成配置文件

    vagrant init [boxname]
    # 说明
    # 当前目录下生成Vagrantfile文件
    # 使用ruby的语法,迭代器遍历
    
    vagrant init centos/7 --box-version 1801.02
    vagrant up
    # 说明
    # boxname参数:
    # box-version参数:1801.02
    # 如果本地没有会从https://vagrantcloud.com/centos/7下载
    # https://vagrantcloud.com/centos/boxes/7/versions/1801.02/providers/virtualbox.box
    

    生成如下配置

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    Vagrant.configure("2") do |config|
      config.vm.box = "centos/7"
      config.vm.box_version = "1801.02"
    end
    

    2)网络的三种配置模式

    # 较为常用是端口映射,就是将虚拟机中的端口映射到宿主机对应的端口直接使用 ,在Vagrantfile中配置:
    # guest: 80 表示虚拟机中的80端口, host: 8080 表示映射到宿主机的8080端口。
    # 宿主机端口 > 1024
    config.vm.network: "forwarded_port", guest: 80, host: 8080, protocol: "tcp/udp"
    
    # host only
    # 如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,
    # 可以使用private_network,并为虚拟机设置IP ,在Vagrantfile中配置:
    # 192.168.1.120 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可
    config.vm.network: "private_network", ip: "192.168.1.120"
    
    # 如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,那么在Vagrantfile中配置:
    config.vm.network: "public_network", ip: "192.168.1.120"
    
    # 共有网络,还可以支持网桥
    config.vm.netowrk "public_network", :bridge => 'eth1: SSID'
    

    3)文件目录共享

    config.vm.synced_folder "c:/work/vm", "/data"
    config.vm.synced_folder "./", "/data/web/apache_default/"
    

    二、实践

    2.1 安装Vagrant

    1)下载

    https://www.vagrantup.com/downloads.html

    vagrant_2.0.2_x86_64.msi

    2)安装

    默认安装就可以(自动添加vagrant安装目录下的bin目录加入到path)

    3)验证安装

    vagrant -v
    

    2.2 安装VirtualBox

    VirtualBox-5.2.0-118431-Win.exe

    默认安装就可以了

    修改一下默认虚拟机位置

    2.3 管理box

    2.3.1 box->Vagrant

    下载box

    http://www.vagrantbox.es

    https://vagrantcloud.com -> https://app.vagrantup.com/boxes/search

    # CentOS 6.7 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30)[notes]
    https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
    

    新建工作目录并且切换到该目录下

    mkdir E:workvm
    cd E:workvm
    

    添加box到Vagrant

    vagrant box add centos67 E:workoxvagrant-centos-6.7.box
    # 说明
    # vagrant:vagrant的命令
    # box:参数
    # add:添加一个box镜像
    # centos67:镜像名称
    # E:workoxvagrant-centos-6.7.box:镜像的地址
    
    # 查看box
    vagrant box list
    

    2.3.2 Vagrant->box

    # 打包虚拟机
    vagrant package centos67 --output e:workvmcentos_mysql.box
    
    # 说明:
    # 如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:
    # sudo rm -f /etc/udev/rule.d/70-persistent-net.rules
    

    2.3.3 删除box

    vagrant box remove centos67
    

    2.4 管理虚拟机

    查看box

    vagrant box list
    

    2.4.1 配置

    初始化配置

    # 在当前工作目录下生成配置文件Vagrantfile
    vagrant init centos67
    # 说明
    # centos67:box名称,如果只有一个可省略
    

    配置文件

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
    	config.vm.define :node0 do |node0|
    		node0.vm.provider "virtualbox" do |v|
    			v.customize ["modifyvm", :id, "--name", "node0", "--memory", "1024"]
    		end
    		node0.vm.box = "centos67"
    		node0.vm.hostname = "node0"
    		node0.vm.network :public_network, ip:"192.168.5.150", bridge: "eth1"
    		node0.vm.synced_folder "data", "/data"
    		node0.vm.synced_folder "E:\git_home\book\2017\Cpp_Primer\samples", "/work"
    	end
    end
    

    配置文件说明

    1. 这是ruby的语法
    2. Vagrant.configure("2") :2是版本的意思
    3. |config|、|node0|、|v| :变量的意思
    4. v.gui = true :virtualbox的界面也会启动

    2.4.2 管理虚拟机

    # 查看状态
    vagrant status
    
    # 启动,启动所有vagrant status中显示的虚拟机
    vagrant up
    
    # 启动指定的虚拟机
    vagrant up centos-plex
    
    # 停止
    vagrant halt
    
    # 删除虚拟机
    vagrant destroy
    
    # 查看已加载的box
    vagrant box list
    

    三、参考

    1. 官方文档
    2. Getting Started
    3. 搭建Linux工作环境之Vagrant
    4. 使用vagrant+VirtualBox搭建代码建调试环境
    5. 使用vagrant部署开发环境
    6. 使用Vagrant在Windows下部署开发环境
    7. 创建自己的Vagrant box
  • 相关阅读:
    用树莓派USB摄像头做个监控
    防火墙控制IP入站规则,控制可访问服务。
    Relational Database (Enhanced ER & Model Design)
    C 语言 #if 指令
    C 语言:#define 指令(宏定义)
    C 语言:#undef 指令
    《网络多人游戏架构与编程》之序列化、RPC、网络拓扑
    《网络多人游戏架构与编程》之游戏引擎、云托管
    《网络多人游戏架构与编程》之伯克利套接字
    《网络多人游戏架构与编程》之延迟、抖动、可靠、可扩展性
  • 原文地址:https://www.cnblogs.com/okokabcd/p/8470501.html
Copyright © 2020-2023  润新知