zoukankan      html  css  js  c++  java
  • fabric devenv Vagrantfile配置

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

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

    变量script为执行完基本配置后,需要执行的脚本

    $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部署开发环境

  • 相关阅读:
    深入研究Servlet线程安全性问题
    Sun公司java语言编码规范
    JAVA的内省机制(introspector)与反射机制(reflection)[转]
    Oracle的悲观锁和乐观锁
    java中120个经典问题
    自定义Java异常
    Java事务处理总结
    Tomcat内存溢出的三种情况及解决办法分析
    .net基础
    C#.Net中的转义
  • 原文地址:https://www.cnblogs.com/fengxm/p/5953170.html
Copyright © 2011-2022 走看看