• vagrant 学习笔记



    ## 安装virtual box:

    https://www.virtualbox.org/

    ## 下载vagrant 镜像:

    #### 查找并下载官方的box镜像:
    https://app.vagrantup.com/boxes/search
    
    #### 还有这个网址里面也有很多:
    http://www.vagrantbox.es/
    
    #### 我用了这个镜像centos6.5 x86_64:
    https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

    ## 下载并安装vagrant(根据版本不同 自行选择安装):

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

    ## 初始化创建文件 和 Vagrantfile文件:

    $ vagrant box add {title} {url}
    $ vagrant init {title}
    $ vagrant up
    
    ### 示例:
    mkdir -p /opt/box/
    cd /opt/box/
    wget https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
    
    ### 添加一个box到系统并命名为centos65:
    vagrant box add centos65 centos65-x86_64-20140116.box
    
    ### 初始化系统:
    vagrant init centos65
    
    ### 启动虚拟机:
    vagrant up
    
    ### 关闭虚拟机:
    vagrant halt
    
    ### 查看虚拟机状态:
    vagrant global-status
    
    ### 重启虚拟机:
    vagrant reload ID
    
    ### 登陆系统:
    vagrant ssh
    
    
    ** 多看看启动命令 里面会有很多的启动信息 和 关于虚拟机的参数:

    ### 跟宿主机共享目录:

    #### 默认共享:
    ** 默认和vagrantfile 同目录,启动日志里面也有写:
    虚拟机 /vagrant 
    宿主机 /opt/box
    
    #### 虚拟机所有的配置都在这个文件里面:
    vim Vagrantfile
    
    #### 取消默认共享:
    config.vm.synced_folder ".","/vagrant",disabled:true
    
    #### 共享自定义目录:
    
    config.vm.synced_folder "/opt/box/tmp","/tmp",owner:"root",group:"root",create:true,
    mount_options:["dmode=775","fmode=664"]
    
    
    #### 重启虚拟机查看挂载:
    vagrant reload id
    
    #### 配置选项:
    config.vm.synced_folder 
    "your_folder"(必须) //物理机目录,可以是绝对地址或相对地址,相对地址是指相对与vagrant配置文件所在目录
    ,"vm_folder(必须)" // 挂载到虚拟机上的目录地址
    ,create(boolean)--可选 //默认为false,若配置为true,挂载到虚拟机上的目录若不存在则自动创建
    ,disabled(boolean):--可选 //默认为false,若为true,则禁用该项挂载
    ,owner(string):'www'--可选 //虚拟机系统下文件所有者(确保系统下有该用户,否则会报错),默认为vagrant
    ,group(string):'www'--可选 //虚拟机系统下文件所有组( (确保系统下有该用户组,否则会报错),默认为vagrant
    ,mount_options(array):["dmode=775","fmode=664"]--可选 dmode配置目录权限,fmode配置文件权限 //默认权限777
    ,type(string):--可选 //指定文件共享方式,例如:'nfs',vagrant默认根据系统环境选择最佳的文件共享方式

    ## 网络设置:

    #### 私网地址:
    config.vm.network "public_network",ip:"192.168.3.100"
    
    #### 公网地址:
    config.vm.network "public_network",ip:"192.168.3.100"
    config.vm.network "public_network",ip:"192.168.3.28"

    ## 端口设置:

    config.vm.network "forwarded_port",guest:80,host:8089
    config.vm.network "forwarded_port",guest:8080,host:9090

    ## 引用外部bash脚本:

    config.vm.provision "shell", path: "master_provision.sh"

    ## 执行命令(provision):

    vagrant provision

    ## 常用命令:

    #### 查看已添加的box:
    vagrant box list
    
    #### 删除box :
    vagrant box remove your_box_name
    
    $ vagrant init # 初始化
    $ vagrant up # 启动虚拟机
    $ vagrant halt # 关闭虚拟机
    $ vagrant reload # 重启虚拟机
    $ vagrant ssh # SSH 至虚拟机
    $ vagrant global-status # 查看虚拟机运行状态
    $ vagrant destroy # 销毁当前虚拟机

    ## vagrant 视频:

    https://ninghao.net/video/1576

    ## 保存镜像成文件 .box:

    #### 1 进入虚拟机里面关闭系统:
    sudo su -
    init 0
    
    #### 2 确认虚拟机状态变成poweroff(vagrant global-status):
    
    vagrant global-status
    id name provider state directory 
    -------------------------------------------------------------------------
    d9fe29b default virtualbox poweroff /opt/box
    
    上面的state 状态已经变成了poweroff 状态
    
    2.1 确认状态:
    #### 进入虚拟机目录执行命令(vagrant status ):
    
    rzxdeMacBook-Pro:box root# vagrant status 
    Current machine states:
    
    default poweroff (virtualbox)
    
    The VM is powered off. To restart the VM, simply run `vagrant up`
    
     
    
    #### 3 执行备份命令:
    vagrant package --output /opt/centos65_2017.box

    ## vagrantfile 里面执行命令或引用外部脚本:

    #### 执行命令:
    config.vm.provision "shell",inline: <<-SHELL
    sudo su -
    yum install -y htop nload iftop iotop lsof netstat telnet 
    SHELL

    #### 执行脚本:

    1.1 编写一个bash 脚本并赋予权限:
    vim script.sh
    
    #!/bin/bash
    echo "this is vagrant bash " > /tmp/data.log
    
    
    1.2 在Vagratfile 文件里面加内容,脚本放在和Vagrantfile文件同级:
    config.vm.provision "shell", path: "script.sh"
    
    1.3 执行命令:
    vagrant provision
    
    1.4 验证结果: 
    没有啥报错的话,就可以看到 安装信息和bash 脚本运行的结果。 script.sh 这个脚本的运行结果 
    vagrant ssh
    cat /tmp/data.log

    ## 我的配置:

    Vagrant.configure("2") do |config|
    # config.vm.hostname = "master01"
    #config.ssh.username = "root"
    #config.ssh.password = "123456"
    config.vm.box = "centos65"
    config.vm.synced_folder "/opt/box/tmp","/tmp",owner:"root",group:"root",create:true,mount_options:["dmode=775","fmode=664"]
    #config.vm.synced_folder ".","/vagrant",disabled:true
    
    config.vm.network "forwarded_port",guest:80,host:9090
    config.vm.network "public_network",ip:"192.168.3.28"
    config.vm.provision "shell",inline: <<-SHELL
    sudo su -
    yum install -y htop nload iftop iotop lsof netstat telnet
    SHELL
    config.vm.provision "shell", path: "script.sh"
    end

    ## 错误大全:

    #### 问题1 : 
    rzxdeMacBook-Pro:~ root# vagrant package --base centos65 --output /opt/centos65_2017.box
    ==> centos65: VM not created. Moving on...
    
    #### 解决:
    去掉"--base"参数就可以解决。 不明白这个参数的具体意义,可能在多虚拟机环境下可以用的到
  • 相关阅读:
    vc生产垃圾清理
    完整的.h宏定义
    vs 2017 boost 安装目录 非安装
    cdlinux
    TryEnterCriticalSection
    go get 升级所有
    delphi win7 and high path
    本机激活Qemu网络配置 之桥接 win 10 2019 LTSC
    archlinux alsa安装,音量设置和音量信息保存
    windows搭建gcc开发环境(msys2) objdump
  • 原文地址:https://www.cnblogs.com/zhenxing06/p/7681147.html
Copyright © 2020-2023  润新知