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

  • 相关阅读:
    车辆路径规划问题分类
    启发算法 汇总篇
    蚁群算法【2】 优化方法
    注意力机制【1】入门讲解
    中值滤波 进阶篇
    峭度系数
    注意力机制【2】 CV中的注意力机制
    Mac免密登录
    windows linux子系统对外提供服务的俩种方法
    离线安装python包
  • 原文地址:https://www.cnblogs.com/fengxm/p/5953170.html
Copyright © 2020-2023  润新知