Vagrant:更好的我的開發環境

簡介

通常來講,線上環境和預發佈環境都有充足的配置化,既能夠清楚的確認環境的組成細節,又能夠高效快速從0重建。可是我的的開發測試環境,可能就沒有這麼完美。也許是公司公用的幾臺測試機,也許是本身的本地環境。折騰出了問題,仍是比較麻煩的。我我的認爲,Docker作開發環境,也是差強人意,仍是本地環境或是虛擬機比較適合。
顯然、一個良好,可快速從新構建的開發環境,能夠極大的提升本身的效率。(開發環境折騰壞了,是常有的事。若是能快速重建就很好了。)若是還能將你的環境,輕鬆分享給其餘人。也能夠解決「我那裏還能跑,爲何到你這裏就跑不了」的經典問題。
Vagrant就是這樣一種工具,能夠控制其餘虛擬化工具好比VirtualBoxVMware,而且能配置文件從0重建環境。並且也能和AnsibleChefPuppet等自動化工具聯動。(若是其餘環境使用上述自動化工具構建,那麼Vagrant能夠輕鬆重用。
最後,本文選用Win10 + Virtualbox + Vagrant 做爲基礎,在CentOS系統中使用rpm方式簡易安裝MySQL。mysql

一、下載安裝

Vagrant的安裝方式和虛擬機相似,除了軟件自己,還須要鏡像。Vagrant使用一種特殊的自制鏡像,以.box結尾。須要從官網或第三方資源處獲取。【注意,這種特殊鏡相區分虛擬機工具,好比Virtuabox和VMware的鏡像不一樣】linux

  1. 軟件本體直接從官網下載便可:https://www.vagrantup.com/downloads
  2. 特殊鏡像有以下幾種獲取方式:sql

這裏沒有說明虛擬化環境自己的安裝,VirtualBox或者VMware都可,直接從對應官網安裝便可。

二、基礎使用方法

2.一、快速上手:

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,控制面板中能夠打開。

image

2.二、其餘經常使用命令、注意點:

vagrant box add  #添加基礎鏡像配置
vagrant init # 初始化虛擬機(初始化後,可自行修改配置文件進行定製

vagrant up  # 建立並啓動虛擬機
vagrant halt  # 關閉虛擬機
vagrant destroy #銷燬當前虛擬機

vagrant status  #查看虛擬機運行狀態
vagrant ssh  # SSH 至虛擬機

vagrant package #導出鏡像

上述幾條命令,基本就能夠輕鬆使用vagrant了。不過還有幾點須要注意:緩存

  • vagrant package 能夠將本身的鏡像打包,便可輕鬆分享給其餘人。(適用於變更較少的鏡像)
    PS:更建議的方式是,共享基礎鏡像+vagrantfile配置文件。直接分享配置文件便可,更加快捷。(若是頻繁變更,直接編輯配置文件會比較輕鬆,不要在鏡像裏手動修改,難以確認到底作了什麼
  • vagrant destroy會銷燬實例,也就是virtualbox中看到的虛擬機。可是不會銷燬配置,destroy以後,能夠直接up重建。
  • 默認用戶不是root,可是能夠sudo執行命令,無需密碼。(若是有其餘須要,自行修改便可。
  • 隨時均可以用vagrant status確認虛擬機狀態,是否啓動、中止等。

參考: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

也可實現 一個配置文件,啓動多個虛擬機。只要都聲明正確便可。

其中,有幾個配置項我以爲比較重要:

四、基於Vagrant簡易安裝MySQL

本文采起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會更加好用。

參考:
http://www.ttlsa.com/linux/use-vagrant-cross-platform/

相關文章
相關標籤/搜索