vagrant认识及配置

什么是vargant

Vagrant提供了易于配置、便于重现、且便携的工作环境,它基于行业技术标准,
通过一个统一的流程控制来最大限度地提高 团队的灵活性及生产力
为了实现其功能,Vagrant 站在了巨人的肩膀上,基于VirtualBox, VMware, AWS, 或 其他 虚拟机管理软件(provider)
的接口来创建虚拟机。 因此,标准的 配置管理工具(provisioning tools (例如 shell 脚本, Chef, 或 Puppet)
都可以在 Vagrant 创建的虚拟机上使用,用来进行自动安装及配置管理。

准备工作

因为VMware不是免费的故Vagrant对应的也不是免费的。
所以我们使用VirtualBox来与Vagrant配套使用

安装VirtualBox和Vagrant这样我们就可以开始使用Vagrant

安装 Vagrant 并添加镜像

使用官方镜像

    vagrant box add hashicorp/precise64

hashicorp/precise64: 镜像名,其它镜像可以在此搜索

添加本地.box文件

可以在这里下载镜像或使用已经打包好的镜像

    vagrant box add hahaha ~/box/package.box  # 添加 package.box 镜像并命名为 hahaha
    cd ~/dev  # 切换到项目目录
    vagrant init hahaha  # 用 hahaha 镜像初始化。

使用ISO文件

需要使用一个Veewee的工具
例如:我们已经把一个rhel-server-6.5-x86_64-dvd.iso文件复制到了iso文件夹

    $ cd iso
    $ veewee vbox build 'rhel65-64bit'
    $ vagrant package --base rhel65-64bit --output rhel65-64bit.box
    $ vagrant box add --name rhel65-64bit rhel65-64bit.box

初始化环境

创建一个开发目录(比如:~/dev),你也可以使用已有的目录,切换到开发目录里,
用 centos/7 镜像初始化当前目录的环境:

    $ cd ~/dev  # 切换目录
    $ vagrant init centos/7  # 用 centos/7 进行 box 初始化
    $ vagrant up  # 启动环境
    $ vagrant ssh  # SSH 登录

提示: 使用vagrant虚拟的环境不受实体机的内存和CPU限制。只有你机器够好

配置多台虚拟机

    Vagrant.configure("2") do |config|
        config.vm.define :web do |web|
            web.vm.provider "virtualbox" do |v|
                v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
            end
            web.vm.box = "base"
            web.vm.hostname = "web"
            web.vm.network :private_network, ip : "11.11.11.1"
        end

        config.vm.define :db do |db|
            db.vm.provider "virtualbox" do |v|
                v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
            end
            db.vm.box = "base"
            db.vm.hostname = "db"
            db.vm.network :private_network, ip : "11.11.11.2"
        end
    end

这里使用了:web和:db定义了两个VM,设置完后再使用vagrant up启动。
可以通过vagrant ssh web和vagrant ss db分别登录指定虚拟机上。
验证两台虚拟机间的通信: (验证方法: 在web虚拟机上通过ssh登录到db虚拟机)

vagrant配置文件

Vagrantfile是vagrant的配置文件
具体说明可以参考这里

这里说明下怎么配置虚拟机的内存和CPU

    config.vm.provider "virtualbox" do |vb|
        vb.memory = 1024
        vb.cpus = 4
    end

遇到的坑

当使用centos配置多个虚拟机时发现设置的IP地址不生效

出现这个问题的原因是eth1网卡没有启动,启动网卡就可以了

    sudo ifup eth1

如果有多个虚拟机,这样非常麻烦. 我们可以在虚拟机创建的使用明确指定去启动这个网卡

  config.vm.provision "shell", inline: <<-SHELL
    echo "vagrant" | sudo passwd root --stdin > /dev/null 2>&1
    sudo ifup eth1
  SHELL

因为root开始的时候未设置密码,这里要先设置root的密码。
具体使用shell修改用户密码见这里

centos命令ifconfig找不到

那是因为使用ip代替了ifconfig
具体参考这里

远程连接出现Permission denied (publickey,gssapi-with-mic)

/etc/ssh/sshd_config 设置 PasswordAuthentication yes
重启虚拟机 或 sudo systemctl restart sshd

“Rsync” could not be found on your PATH

参考地址

I found in another forum that the local Vagrant directory is mounted as "/vagrant" via rsync. This is set in the box itself, you can check by opening

C:\Users\{your_username}\.vagrant.d\boxes\debian-VAGRANTSLASH-jessie64\8.2.2\virtualbox\Vagrantfile
and see the setting

  config.vm.synced_folder \
    ".",
    "/vagrant",
    type: "rsync"
to get around this I added the following line in my local Vagrantfile

  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
and the error was resolved

常用命令

    $ vagrant init # 初始化
    $ vagrant up # 启动虚拟机
    $ vagrant halt # 关闭虚拟机
    $ vagrant reload # 重启虚拟机
    $ vagrant ssh # SSH 至虚拟机
    $ vagrant status # 查看虚拟机运行状态
    $ vagrant destroy # 销毁当前虚拟机
    $ vagrant suspend # 挂起虚拟机
    $ vagrant resume # 恢复挂起状态
    $ vagrant ssh-config # 输出ssh连接信息
    $ vagrant package # 打包当前运行的虚拟机的环境
    $ vagrant plugin # 用于安装卸载插件
    $ vagrant box list # 查看已添加镜像
    $ vagrant box remove centos/7 # 删除指定镜像
    $ vagrant box add "boxIdentity" # remoteUrlorLocalFile 添加box
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 开发需要在各种系统上进行开发任务,运维则需要在各种系统上学习工具使用。因此,虚拟机恐怕也是 IT 人员最常使用的工...
    李广慧阅读 5,517评论 3 24
  • 1,介绍Vagrant 我们做web开发的时候经常要安装各种本地测试环境,比如apache,php,mysql,r...
    meng_philip123阅读 2,503评论 0 12
  • Vagrant是什么 Vagrant是一个软件,可以自动化虚拟机的安装和配置流程。目前市面上个人PC的主流操作系统...
    北魏企鹅阅读 29,930评论 3 40
  • 最近服务器老是宕机,学习的时候很多环境有需要集群,忍无可忍的情况下终于决定自己装一波虚拟机宫学习使用。本人系统为D...
    行书以鉴阅读 1,907评论 0 1
  • 该文章转载,,遇到大拿了 出处: http://blog.csdn.net/longxinchen_ml/arti...
    重新出发_砥砺前行阅读 861评论 0 0