Vagrant - 常用命令总结

1. 简介

  • 快速建立产品网络的多机器环境,例如web服务器、db服务器
  • 建立一个分布式系统,学习他们是如何交互的
  • 测试API和其他组件的通信
  • 容灾模拟,网络断网、机器死机、连接超时等情况

Vagrant支持单机模拟多台机器,而且支持一个配置文件Vagrntfile就可以跑分布式系统。

image.png

2. 常用命令

2.1. machine管理

$ vagrant init      # 初始化,生成Vagrantfile,可指定box
$ vagrant up        # 启动虚拟机,可指定machine
$ vagrant halt      # 关闭虚拟机,可指定machine
$ vagrant reload    # 重启虚拟机,并重新加载配置参数,可指定machine
$ vagrant ssh       # SSH 至虚拟机,可指定machine
$ vagrant suspend   # 挂起虚拟机,可指定machine
$ vagrant resume    # 唤醒虚拟机,可指定machine
$ vagrant status    # 查看虚拟机运行状态,可指定machine
$ vagrant destroy   # 销毁当前虚拟机,可指定machine
$ vagrant suspend   # 挂起当前的虚拟机
$ vagrant resume    # 恢复前面被挂起的状态

2.2. box管理

$ vagrant box list    # 查看本地box列表
$ vagrant box add     # 添加box到列表
$ vagrant box remove  # 从box列表移除 

2.3. machine与box转换

$ vagrant package        # 对指定machine打包成box
$ vagrant box repackage  # 对指定box重新打包成box,该box的machine会被halt
  • 对指定machine打包,在当前目录生成web.box
$ vagrant package --output web.box web
==> web: Attempting graceful shutdown of VM...
==> web: Clearing any previously set forwarded ports...
==> web: Exporting VM...
==> web: Compressing package to: /home/kevin/learn/vagrant/test-cluster1/web.box
  • 对指定box重新打包,在当前目录生成package.box
$ vagrant box repackage <name> <provider> <version>

2.4. 快照管理

后续补充

3. Vagrant File

  • 示例,创建两个machine
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.define "web" do |web|
    # web.vm.box = "ubuntu/xenial64"
    web.vm.box = "ubuntu/1604"
    web.vm.box_url = "file:///home/kevin/learn/vagrant/xenial-server-cloudimg-amd64-vagrant.box"
    web.vm.hostname = "web"
    web.vm.network "private_network", ip: "192.168.56.10"
    web.vm.provider "virtualbox" do |v|
      v.gui = false
      v.name = "ubuntu-0"
      v.cpus = "1"
      v.memory = "2048"
    end
  end

  config.vm.define "db" do |db|
    # db.vm.box = "ubuntu/xenial64"
    db.vm.box = "ubuntu/1604"
    db.vm.box_url = "file:///home/kevin/learn/vagrant/xenial-server-cloudimg-amd64-vagrant.box"
    db.vm.hostname = "db"
    db.vm.network "private_network", ip: "192.168.56.11"
    db.vm.provider "virtualbox" do |v|
      v.gui = false
      v.name = "ubuntu-1"
      v.cpus = "1"
      v.memory = "2048"
    end
  end
end
  • 示例,循环创建3个node
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  (1..3).each do |i|
    config.vm.define "node-#{i}" do |node|
      node.vm.box = "ubuntu/1804"
      node.vm.box_url = "file:///home/shuzhang/Public/bionic-server-cloudimg-amd64-vagrant.box"
      node.vm.hostname = "node#{i}"
      node.vm.network "private_network", ip: "192.168.56.#{i}"
      node.vm.provider "virtualbox" do |v|
        v.gui = false
        v.name = "ubuntu-#{i}"
        v.cpus = "1"
        v.memory = "2048"
      end
    end
  end
end

4. docs

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Vagrant 的介绍 虚拟开发环境 平常我们经常会遇到这样的问题:在开发机上面开发完毕程序,放到正式环境之...
    斐波那契额阅读 5,839评论 1 12
  • 1,介绍Vagrant 我们做web开发的时候经常要安装各种本地测试环境,比如apache,php,mysql,r...
    meng_philip123阅读 7,305评论 0 12
  • Box 命令: vagrant box 这是用于管理(添加,删除等)box的命令。 该命令的主要功能通过更多的子命...
    wwyyzz阅读 4,503评论 0 0
  • Vagrant是什么 Vagrant是一个软件,可以自动化虚拟机的安装和配置流程。目前市面上个人PC的主流操作系统...
    北魏企鹅阅读 30,347评论 3 40
  • 一、Vagrant是什么? 二、Vargant的好处 Vagrant会创建共享文件夹,用来在主机和虚拟机之间进行资...
    Joncc阅读 8,857评论 0 0

友情链接更多精彩内容