成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

vagrant 做測試環境的一點總結(下)

云計算 虛擬化
vagrant 是我在本地 osx 系統下做測試環境時候開始研究的,以前只是單一的用 vbox 裝個本地虛機時并沒有發覺用或者不用有什么差別,但隨著本地開始有一些特殊需求的時候,才發覺 vagrant 提供的功能還是很值得稱贊的。

生活不會因為某個節點而變得與眾不同,未來的幸運,都是過往努力的積攢。

vagrant 是我在本地 osx 系統下做測試環境時候開始研究的,以前只是單一的用 vbox 裝個本地虛機時并沒有發覺用或者不用有什么差別,但隨著本地開始有一些特殊需求的時候,才發覺 vagrant 提供的功能還是很值得稱贊的。

[[224175]]

provisioning

類似于開機啟動,可以開機執行某個命令,可以執行某個腳本都可以

比如我想在開機后自動安裝某個包,同步下時間,那么如果是 vbox 的虛機可能你得連到虛機里,然后在/etc/rc.local下寫上命令等等,但在 Vagrantfile 里,可以直接以配置的形式體現,下面這段是配置里自帶的一段,開機自動更新包,安裝 Apache

  1. config.vm.provision "shell", inline: <<-SHELL 
  2.   apt-get update 
  3.   apt-get install -y apache2 
  4. SHELL 

所以只要把中間那部分換成自己的命令就好,但是如果命令太長,還有邏輯判斷,***是開機執行個腳本,那在配置文件里應該這樣寫

  1. config.vm.provision :shell, path: "<scriptname.sh>" 

注意這里的路徑是以Vagrantfile所在的目錄為根目錄的,上述的寫法,腳本就必須存放在和 Vagrantfile同級就可以

vagrant 創建集群

如果是 vbox 或者是 VMware 的話,模擬一個集群方法就是多建幾個虛機環境,然后打通內網,無論是 clone 還是新建都還挺麻煩的,但是 vagrant 靠一個配置文件就可以完成,這里直接引用 go-best-practice 里的這段話

Vagrant支持單機模擬多臺機器,而且支持一個配置文件Vagrntfile就可以跑分布式系統。這種多機器模式特別適合以下幾種人:

快速建立產品網絡的多機器環境,例如web服務器、db服務器

建立一個分布式系統,學習他們是如何交互的

測試API和其他組件的通信

容災模擬,網絡斷網、機器死機、連接超時等情況

現在我們來建立多臺VM跑起來,並且讓他們之間能夠相通信,假設一臺是應用服務器、一臺是DB服務器,那么這個結構在Vagrant中非常簡單,其實和單臺的配置差不多,你只需要通過config.vm.define來定義不同的角色就可以了,現在我們打開配置文件進行如下設置:

  1. Vagrant.configure("2") do |config| 
  2.   config.vm.define :web do |web| 
  3.     web.vm.provider "virtualbox" do |v| 
  4.           v.customize ["modifyvm", :id, "--name""web""--memory""512"
  5.     end 
  6.     web.vm.box = "base" 
  7.     web.vm.hostname = "web" 
  8.     web.vm.network :private_network, ip: "11.11.1.1" 
  9.   end 
  10.   config.vm.define :db do |db| 
  11.     db.vm.provider "virtualbox" do |v| 
  12.           v.customize ["modifyvm", :id, "--name""db""--memory""512"
  13.     end 
  14.     db.vm.box = "base" 
  15.     db.vm.hostname = "db" 
  16.     db.vm.network :private_network, ip: "11.11.1.2" 
  17.   end 
  18. end 

這里的設置和前面我們單機設置配置類似,只是我們使用了:web以及:db分別做了兩個VM的設置,并且給每個VM設置了不同的hostname和IP,設置好之后再使用vagrant up將虛擬機跑起來:

再次啟動并連接,連接并需要指定角色即可

  1. $ vagrant up 
  2. $ vagrant ssh web 
  3. vagrant@web:~$ 
  4. $ vagrant ssh db 
  5. vagrant@db:~$ 

批量生成機器

上面的情況適合于想建立個小集群,用于特定的環境,而現在有個需求想一次性生成10臺機器,用上面的方法就略顯復雜了,得寫一大串配置文件,顯得臃腫,不過 vagrant 也提供了特定的方式

以下這個配置來源于 https://jacobustczhi.gitbooks.io/-vagrant/content/chapter.html

  1. Vagrant.configure("2") do |config| 
  2.     # The most common configuration options are documented and commented below. 
  3.     # For a complete reference, please see the online documentation at 
  4.     # https://docs.vagrantup.com. 
  5.     # Every Vagrant development environment requires a box. You can search for 
  6.     # boxes at https://atlas.hashicorp.com/search. 
  7.     (0..10).each do |i| 
  8.         config.vm.define "node#{i}" do |node| 
  9.             #  設置虛擬機的Box 
  10.             node.vm.box = "ubuntu/trusty64" 
  11.             # 設置虛擬機的主機名 
  12.             node.vm.hostname="node#{i}" 
  13.             # 設置虛擬機的IP 
  14.             node.vm.network "public_network", bridge: "eno1", ip: "192.168.17.20#{i}" 
  15.             # VirtaulBox相關配置 
  16.             node.vm.provider "virtualbox" do |v| 
  17.                 v.name = "node#{i}" 
  18.                 v.memory = 1024 
  19.                 v.cpus = 1 
  20.             end 
  21.         end 
  22.         if ARGV[0] == "up" && ! File.exist?("./disk1.vdi") 
  23.             # 運行腳本增加swap空間 
  24.             config.vm.provision "shell", path: "increase_swap.sh" 
  25.         end 
  26.     end 
  27. end 

可以看到,與創建單個虛擬機相比,這里多了層循環,而變量 i 可以用于設置節點的名稱與IP,使用#{i}取值:

  • (0..10).each do |i|
  • end

plugin

根據網友KiwenLau的文章里提到了一個錯誤

VirtualBox 設置共享目錄時需要在虛擬機中安裝VirtualBox Guest Additions,這個 Vagrant會自動安裝。但是,VirtualBox Guest Additions是內核模塊,當虛擬機的內核升級之后,VirtualBox Guest Additions會失效,導致共享目錄掛載失敗,出錯信息如下:

  • Failed to mount folders in Linux guest. This is usually because
  • the “vboxsf” file system is not available. Please verify that
  • the guest additions are properly installed in the guest and
  • can work properly. The command attempted was:
  • mount -t vboxsf -o uid=id -u vagrant,gid=getent group vagrant | cut -d: -f3 vagrant /vagrant
  • mount -t vboxsf -o uid=id -u vagrant,gid=id -g vagrant vagrant /vagrant
  • The error output from the last command was:
  • stdin: is not a tty
  • /sbin/mount.vboxsf: mounting failed with the error: No such device

安裝 Vagrant 插件vagrant-vbguest可以解決這個問題,因為該插件會在虛擬機內核升級之后重新安裝VirtualBox Guest Additions。

  1. $ vagrant plugin install vagrant-vbguest 

 

責任編輯:武曉燕 來源: mingmings
相關推薦

2018-03-21 14:23:39

vagrant測試環境

2012-03-27 08:49:19

Json

2009-09-14 20:17:05

并行LINQ

2009-08-18 13:06:17

C#枚舉類型

2017-12-29 21:49:36

信息安全網絡攻擊漏洞

2009-08-28 16:30:24

C#線程

2010-05-20 15:29:43

優化IIS

2009-08-18 17:20:17

C#操作符重載

2009-07-09 15:09:05

JDK卸載

2009-09-14 19:44:27

LINQ To SQL

2025-05-29 00:00:00

UI 庫前端模塊化

2016-04-05 10:12:58

HiveSQLHadoop

2021-06-09 15:55:34

Oracle賬號鎖定

2016-01-06 09:49:59

青云/SDN

2014-06-04 10:48:38

Swift蘋果iOS

2012-07-12 10:49:53

項目管理

2011-08-29 17:34:15

NLS_DATE_FOOracle

2011-07-04 09:33:04

惠普轉型李艾科

2013-01-08 10:06:43

創業創業方法

2015-07-21 16:43:13

IOSUI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久亚洲国产精品 | 日本久久精品视频 | 激情婷婷| 亚洲成人在线免费 | 91最新入口 | 国产精品视频网站 | 国产精品久久久久久久免费大片 | www.一区二区三区.com | 美女毛片免费看 | 日日碰狠狠躁久久躁婷婷 | 国产精品欧美精品日韩精品 | 美国av毛片 | 久久夜夜 | 国产在线一区二 | 国产精品久久久久久久午夜 | 精品免费国产一区二区三区四区介绍 | 国产成人高清在线观看 | 久久精品成人 | 国产精品久久久久久久久久久久冷 | 午夜精品| 手机av在线 | 国产成人精品一区二区三区 | 国产精品亚洲第一 | 亚洲成人一区二区 | 精品国产乱码久久久久久影片 | 精品久久久久久亚洲综合网站 | 国产福利视频导航 | 精品91久久| www.欧美.com| 欧美久久久久久久 | 亚洲国产成人精品女人久久久 | 天天操天天怕 | 欧美白人做受xxxx视频 | 亚洲精品一区二区三区在线观看 | 91精品国产综合久久久久久丝袜 | 中文字幕一区二区三区四区 | 中文字幕精品一区 | 久精品久久 | 狠狠入ady亚洲精品经典电影 | 一区二区三区在线播放视频 | 日韩精品在线一区 |