Vagrantfile配置

Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用vagrant reload,则不会被强制重新加载。

# This is the mount point for the sync_folders of the source
SRCMOUNT = "/hyperledger"
LOCALDEV = "/local-dev"

The script is the scripts to be run

$script = <<SCRIPT
set -x

export DOCKER_STORAGE_BACKEND="#{ENV[‘DOCKER_STORAGE_BACKEND‘]}"

cd #{SRCMOUNT}/devenv
./setup.sh

SCRIPT
baseimage_release = File.read ‘../.baseimage-release‘
Vagrant.require_version ">= 1.7.4"

box设置:配置虚拟机主机名

config.vm.box = "hyperledger/fabric-baseimage"

auto download box from

config.vm.box_version = ENV[‘USE_LOCAL_BASEIMAGE‘] ? "0": baseimage_release # Vagrant does not support versioning local images, the local version is always implicitly version 0

端口转发,设置主机与虚拟机之间的端口的映射关系.要转发到虚拟机(guest)上的端口是 7050,转发的是主机(host)上的7050 端口。也就是你在访问主机上的7050端口的时候,实际上访问的是虚拟机上的 7050端口

config.vm.network :forwarded_port, guest: 7050, host: 7050 # Openchain REST services
config.vm.network :forwarded_port, guest: 7051, host: 7051 # Openchain gRPC services
config.vm.network :forwarded_port, guest: 7054, host: 7054 # Membership service
config.vm.network :forwarded_port, guest: 7053, host: 7053 # GRPCCient gRPC services

同步目录:synced_folder方法的第一个参数为主机上要跟虚拟机同步的目录,第二个参数为要挂载到虚拟机上的路径。

config.vm.synced_folder "..", "#{SRCMOUNT}"  #Copy /opt/gopath/src/github.com/hyperledger/fabric folder to /hyperledger
config.vm.synced_folder "..", "/opt/gopath/src/github.com/hyperledger/fabric" #Copy /opt/gopath/src/github.com/hyperledger/fabric folder to /opt/gopath/src/github.com/hyperledger/fabric
config.vm.synced_folder ENV.fetch(‘LOCALDEVDIR‘, ".."), "#{LOCALDEV}" #Copy /opt/gopath/src/github.com/hyperledger/fabric folder to /opt/gopath/src/github.com/hyperledger/fabric
#/vagrant => /opt/gopath/src/github.com/hyperledger/fabric/devenv 默认配置下,虚拟机中的/vagrant目录与主机上的项目目录是同一个目录,该目录中的所有操作都会自动同步。#注意的是,在该虚拟机上进行rm -fr /操作的时候请谨慎一些,因为在该虚拟机中,挂载了/vagrant目录,该目录是与你主机的项目共享的,删除的话会将项目删除掉。

内存和cpu核心

config.vm.provider :virtualbox do |vb|  #Customize the amount of memory on the VM:
    vb.name = "hyperledger"
    vb.customize [‘modifyvm‘, :id, ‘--memory‘, ‘4096‘]
    vb.cpus = 2

    storage_backend = ENV[‘DOCKER_STORAGE_BACKEND‘]
    case storage_backend
    when nil,"","aufs","AUFS"
      # No extra work to be done
    when "btrfs","BTRFS"
      # Add a second disk for the btrfs volume
      IO.popen("VBoxManage list systemproperties") { |f|

        success = false
        while line = f.gets do
          # Find the directory where the machine images are stored
          machine_folder = line.sub(/^Default machine folder:\s*/,"")

          if line != machine_folder
            btrfs_disk = File.join(machine_folder, vb.name, ‘btrfs.vdi‘)

            unless File.exist?(btrfs_disk)
              # Create the disk if it doesn‘t already exist
              vb.customize [‘createhd‘, ‘--filename‘, btrfs_disk, ‘--format‘, ‘VDI‘, ‘--size‘, 20 * 1024]
            end

            # Add the disk to the VM
            vb.customize [‘storageattach‘, :id, ‘--storagectl‘, ‘SATA Controller‘, ‘--port‘, 1, ‘--device‘, 0, ‘--type‘, ‘hdd‘, ‘--medium‘, btrfs_disk]
            success = true

            break
          end
        end
        raise Vagrant::Errors::VagrantError.new, "Could not provision btrfs disk" if !success
      }
    else
      raise Vagrant::Errors::VagrantError.new, "Unknown storage backend type: #{storage_backend}"
    end

Vagrant使用提供者(provider)来启动隔离的虚拟环境。默认的提供者是Virtualbox

The Vagrant Shell provisioner allows you to upload and execute a script within the guest machine.Reference to Shell Provisioner

config.vm.provision :shell, inline: $script #run scripts
config.vm.provision :shell, path =>"boot.sh" #run scripts in boot.sh file using ssh provider method like running command ‘vagrant ssh‘

vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机——对应就是关机)
vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)
vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)
vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)

vagrant package --output NAME --vagrantfile FILE(当在启动Vagrant后,对于虚拟机有进行过安装环境相关的配置,如果并不希望写在Vagrant的启动shell里面每次都重新安装配置一遍,可以将当前配置好的虚拟机打包成box.(可选)设置通过NAME来指定输出的文件名/(可选)可以将Vagrantfile直接封进box中)注:如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:sudo rm -f /etc/udev/rule.d/70-persistent-net.rules

参考网站:

Vagrant简介和安装配置

使用vagrant部署开发环境

时间: 2024-08-26 14:58:08

Vagrantfile配置的相关文章

使用 Vagrant 构建开发环境

摘要:本文描述了如使用 Vagrant 构建统一的开发环境. 问题 作为开发人员,我们通常面临的问题有: 开发环境需要手工安装配置,这包括操作系统(CentOS.Ubuntu).PHP/HHVM.Python.Node.js.MySQL.Apache/Nginx等的版本和配置. 无法重现问题.甲:你说的问题,怎么在我的机器上没事儿啊?乙:可问题的确存在,不信你到我的机器上来看.甲:那我的机器和你的环境哪里不同呢?因为环境不同,比如开发环境和生产环境不同,和测试环境也不完全相同. 团队中没有统一的

vagrant之运维,搭建统一开发环境

特点:通过vagrant打包环境,可以跨平台使用.意思就是在windows下可以使用ubuntu系统配置的环境 使用的平台:windows+64位 需要准备的工具: virtualbox:虚拟机  https://www.virtualbox.org/wiki/Downloads vagrant:下载地址  http://downloads.vagrantup.com/ 下载需要使用的 box 通过 http://www.vagrantbox.es/  进行下载 *一般操作命令 vagrant

Vagrant 部署python开发环境

Vagrant简介 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境. 在Windows下,也可以方便地使用Linux环境开发程序 官方文档 http://docs.vagrantup.com/v2/getting-started/index.html box https://vagrantcloud.com/discover/featured 准备工作 下载安装 VirtualBox

Docker系列一:Docker的介绍和安装

Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建.部署和复制,并能将其从一个环境顺利迁移至另外一个环境. Docker官方网站:http://www.docker.com Github Docker 源码:https://github.com/docker/docker 基础特性: 基于C/S架构应用程序 模块化 层与镜像版本控制

vagrant初识(一)

vagrant是部署虚拟开发环境的工具,他可以简化虚拟机配置,为我们搭建和配置轻量级可重用,可移植的开发环境.他能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境. vagrant支持VirtualBox,VMware,AWS等虚拟机. vagrant关键字 host--宿主机,安装虚拟机软件和vagrant的系统 guest/vm--虚拟机 安装Vagrant ubuntu下载安装vagrant,官方下载地址:https://www.vagrantup.com/downloads.

[转帖]Vagrant 入门指南

Vagrant 入门指南 https://linux.cn/article-9587-1.html Vagrant 简介 Vagrant 是一个用来构建和管理虚拟机环境的工具.Vagrant 有着易于使用的工作流,并且专注于自动化,降低了开发者搭建环境的时间,提高了生产力.解决了“在我的机器上可以工作”的问题. Vagrant 是为了方便的实现虚拟化环境而设计的,使用 Ruby 开发,基于 VirtualBox 等虚拟机管理软件的接口,提供了一个可配置.轻量级的便携式虚拟开发环境.使用 Vagr

4、Vagrantfile常用配置

1. Vagrantfile简介 Vagrantfile是一个简单的文本文件,通过它可以定义虚拟机的各种配置,如网络.内存.主机名等,每个项目都需要有一个Vagrantfile,在执行vagrant init的目录下可以找到该文件,也可以自己手动编写 2. 配置 Vagrant.configure(2) do |config|    //vagrant起始配置块   config.vm.box = "centos"          //定义box名称   config.vm.host

Devops之工作环境配置

Vagrant Vagrant是自动化配置或复制工作环境的工具. 以VirtualBox, VMware, AWS, 等为provider提供VM:支持多种对VM的provision工具:shell scripts, Chef, 或Puppet,在VM上自动安装和配置软件. 如何使用Vagrant + 下载并安装Vagrant:http://www.vagrantup.com/downloads + vagrant init -- 初始化vagrant工作目录 + 建box --可使用Virtu

最全Pycharm教程(7)——虚拟机VM的配置

最全Pycharm教程(1)——定制外观 最全Pycharm教程(2)——代码风格 最全Pycharm教程(3)——代码的调试.运行 最全Pycharm教程(4)——有关Python解释器的相关配置 最全Pycharm教程(5)——Python快捷键相关设置 最全Pycharm教程(6)——将Pycharm作为Vim编辑器使用 最全Pycharm教程(8)——Django工程的创建和管理 设想这样一种情况,你在一个平台上操作你的工程,但你希望在另外一个平台上完善并运行它,这就是为什么Pychar