码迷,mamicode.com
首页 > 其他好文 > 详细

vagrant 使用

时间:2017-10-17 20:07:58      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:vagrant


## 安装virtual box:

```bash

https://www.virtualbox.org/

```


##  下载vagrant 镜像:

```bash

####  查找并下载官方的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(根据版本不同 自行选择安装):

```bash

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

```


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

```bash

 $ 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



** 多看看启动命令  里面会有很多的启动信息 和 关于虚拟机的参数:


```


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

```bash

####  默认共享:

**    默认和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默认根据系统环境选择最佳的文件共享方式



```



##  网络设置:

```bash

#### 私网地址:

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"



```


##  端口设置:

```bash

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

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

```


##  引用外部bash脚本:

```bash

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

```


## 执行命令(provision):

```bash

 vagrant provision

```



## 常用命令:

```bash

#### 查看已添加的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  # 销毁当前虚拟机



```


```bash

#### vagrant 视频:

https://ninghao.net/video/1576

```


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


```bash

####  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 里面执行命令或引用外部脚本:

```bash

####  执行命令:

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 


```


##  我的配置:

```bash

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



```




## 错误大全:

```bash

#### 问题1 : 

 rzxdeMacBook-Pro:~ root# vagrant package  --base centos65 --output /opt/centos65_2017.box

==> centos65: VM not created. Moving on...


#### 解决:

去掉"--base"参数就可以解决。 不明白这个参数的具体意义,可能在多虚拟机环境下可以用的到




```


本文出自 “风满楼” 博客,谢绝转载!

vagrant 使用

标签:vagrant

原文地址:http://zhenxing.blog.51cto.com/728846/1973199

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!