通常來講,線上環境和預發佈環境都有充足的配置化,既能夠清楚的確認環境的組成細節,又能夠高效快速從0重建。可是我的的開發測試環境,可能就沒有這麼完美。也許是公司公用的幾臺測試機,也許是本身的本地環境。折騰出了問題,仍是比較麻煩的。我我的認爲,Docker作開發環境,也是差強人意,仍是本地環境或是虛擬機比較適合。
顯然、一個良好,可快速從新構建的開發環境,能夠極大的提升本身的效率。(開發環境折騰壞了,是常有的事。若是能快速重建就很好了。)若是還能將你的環境,輕鬆分享給其餘人。也能夠解決「我那裏還能跑,爲何到你這裏就跑不了」的經典問題。
而Vagrant
就是這樣一種工具,能夠控制其餘虛擬化工具好比VirtualBox
和VMware
,而且能配置文件從0重建環境。並且也能和Ansible
、Chef
、Puppet
等自動化工具聯動。(若是其餘環境使用上述自動化工具構建,那麼Vagrant
能夠輕鬆重用。
最後,本文選用Win10
+ Virtualbox
+ Vagrant
做爲基礎,在CentOS
系統中使用rpm
方式簡易安裝MySQL。mysql
Vagrant的安裝方式和虛擬機相似,除了軟件自己,還須要鏡像。Vagrant使用一種特殊的自制鏡像,以.box結尾。須要從官網或第三方資源處獲取。【注意,這種特殊鏡相區分虛擬機工具,好比Virtuabox和VMware的鏡像不一樣】linux
特殊鏡像有以下幾種獲取方式:sql
這裏沒有說明虛擬化環境自己的安裝,VirtualBox或者VMware都可,直接從對應官網安裝便可。
Vagrant是命令行工具,安裝完以後,能夠在powershell或者cmd中使用。想要快速啓動一個Vagrant虛擬機,可使用以下操做。shell
建議使用一個空文件夾進行操做,鏡像不必定要在這個目錄中。
小技巧:在文件夾空白處:Shift
+ 右鍵,便可在該位置打開Powershell
或者cmd
vagrant box add [env_name] [url/path] # 導入鏡像,這裏也可使用本地下載好的鏡像路徑,不必定是url。 vagrant init [env_name] # 初始化。 vagrant up #啓動 vagrant ssh #ssh進入虛擬機
經過上述幾條指令,就能夠載入下載好的鏡像,初始化、並啓動一個虛擬機、ssh進入虛擬機。centos
第二步init要注意,命名和第一條命令的命名要一致。
win10也可安裝ssh,控制面板中能夠打開。
vagrant box add #添加基礎鏡像配置 vagrant init # 初始化虛擬機(初始化後,可自行修改配置文件進行定製 vagrant up # 建立並啓動虛擬機 vagrant halt # 關閉虛擬機 vagrant destroy #銷燬當前虛擬機 vagrant status #查看虛擬機運行狀態 vagrant ssh # SSH 至虛擬機 vagrant package #導出鏡像
上述幾條命令,基本就能夠輕鬆使用vagrant了。不過還有幾點須要注意:緩存
參考:http://www.javashuo.com/article/p-fpgisqpm-ds.htmlruby
vagrant init初始化結束後,會在當前目錄生成一個 Vagrantfile,你能夠對其進行修改、實現各類定製化。
好比config.vm.network "private_network", ip: "192.168.33.10"
修改網卡默認ip。網絡
一個基礎的初始文件很簡單,大概是這樣:app
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "MySQL-test00" # 在這裏增長其他配置項 end
根據根據須要,增長各類配置項便可。【好比網卡採用橋接、cpu核數,內存等等。
更多配置項能夠參考:https://www.vagrantup.com/docs/vagrantfilessh
也可實現 一個配置文件,啓動多個虛擬機。只要都聲明正確便可。
其中,有幾個配置項我以爲比較重要:
自定義初始化(provision):https://www.vagrantup.com/docs/provisioning
這裏就是重中之重,實現高度定製的初始化。Ansible、Chef、Puppet等就是在這裏加入。(默認是使用shell命令進行初始化)
provision不是在每次啓動都會運行,只有在第一次up,以及每次privision時纔會執行。
本文采起rpm方式安裝MySQL。你能夠在官網 獲取到指定版本的MySQL repo下載連接。
對於rpm包的引入方式,有以下2種:
Vagrantfile實例
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "test02" #橋接網卡配置 config.vm.network "public_network", bridge: "Realtek PCIe GbE Family Controller" #手動配置網關(其實也可以使用ansible完成這一步) #config.vm.provision "shell", # run: "always", # inline: "route add default gw 192.168.50.1" #定義一個腳本(安裝基礎網絡工具,yum安裝mysql) $script = <<-'SCRIPT' curl -o mysql.rpm https://repo.mysql.com/mysql57-community-release-el7-3.noarch.rpm sudo rpm -ivh mysql.rpm #下載並導入rpm包 sudo yum makecache #生成meta緩存 sudo yum install -y mysql-community-{client,libs,common,server}.x86_64 #安裝Mysql sudo yum install -y net-tools #安裝基礎網絡工具 SCRIPT # 運行上面定義好的腳本(使用Ansible更佳) config.vm.provision "shell", inline: $script end
最終配置完成後,就能夠vagrant up一鍵安裝Mysql虛擬機了。也可destroy+up快速重建。
本文主要講解了vagrant的基礎使用方法,包括安裝,box鏡像下載,配置文件修改,基礎命令等。熟悉了這些,就能夠快速高效的維護本身的開發測試環境。也能夠經過共享基礎鏡像+分享Vagrantfile的方式,來將本身的鏡像分享給其餘人。
最後還簡單實現了一個簡單的MySQL的Vagranfile,初始化使用了最直接的shell。若是能使用Ansible或者其餘自動化工具,相信vagrant會更加好用。