享一篇簡(jiǎn)短的實(shí)踐文章,明天就是五一假期了,祝大家玩得開心。
筆者需要部署一個(gè) etcd 集群,并非使用 goreman 工具部署的偽集群。為了與真實(shí)環(huán)境對(duì)等,需要用到三臺(tái)機(jī)器,然而筆者手上只有一臺(tái)主機(jī),Centos 系統(tǒng),配置為 8G 雙核。由此想到在單機(jī) Centos 再啟動(dòng)虛擬機(jī)的想法。
vagrant 的使用需要結(jié)合 VirtualBox,我們我們準(zhǔn)備這兩個(gè)軟件的安裝源,以及用到的 centos7 鏡像:
#virtualbox
https://www.virtualbox.org/wiki/Linux_Downloads
#vagrant
https://www.vagrantup.com/downloads.html
#centos7.box
http://cloud.centos.org/centos/7/vagrant/x86_64/images/
筆者下載的是最新的版本,官網(wǎng)的下載速度實(shí)在慢(有需要可以聯(lián)系筆者獲取下載好的安裝包),文件如下:
$ ls
CentOS-7-x86_64-Vagrant-2002_01.VirtualBox.box VirtualBox-6.1-6.1.6_137129_el7-1.x86_64.rpm vagrant_2.2.7_x86_64.rpm
$ yum -y localinstall VirtualBox-6.1-6.1.6_137129_el7-1.x86_64.rpm vagrant_2.2.7_x86_64.rpm
如上的命令,即安裝好 vagrant 和 VirtualBox。
vagrant 的常用命令如下,用于管理boxes的命令,比如添加、刪除等等。此命令的功能主要通過以下子命令完成:
#添加box文件,就是我們剛剛下載的鏡像文件,添加后可以到處使用。
vagrant box add CentOS-7-x86_64-Vagrant-2002_01.VirtualBox.box --name centos7
#創(chuàng)建配置文件
vagrant init centos7
初始化的步驟,會(huì)生成一個(gè) Vagrantfile,即配置文件。
$ vagrant init centos7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
常用的配置如下所示:
還有更詳細(xì)的配置,參見:https://www.vagrantup.com/docs/vagrantfile/。筆者使用的配置如下:
Vagrant.configure("2") do |config|
config.vm.box = "centos7"
config.vm.network "public_network", ip: "192.168.0.5"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
# Customize the amount of memory on the VM:
vb.memory = "1024"
end
end
可以看到,配置比較簡(jiǎn)單,使用橋接的方式指定了網(wǎng)絡(luò),設(shè)置關(guān)閉 gui,并限制內(nèi)存為 1GB。
$ vagrant up
The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:
VirtualBox is complaining that the kernel module is not loaded. Please
run `VBoxManage --version` or open the VirtualBox GUI to see the error
message which should contain instructions on how to fix this error.
參考,virtualbox-is-complaining-that-the-kernel-module-is-not-loaded。原因是 vagrant 依賴 kernel-devel gcc make perl, 啟動(dòng) kernel-devel ,最好按照 vagrant 的提示進(jìn)行安裝和正在使用內(nèi)核版本一直的庫(kù)。
通過uname查看內(nèi)核版本:
$ uname -a
Linux aoho 3.10.0-1062.1.2.el7.x86_64 #1 SMP Mon Sep 30 14:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
因此我們需要安裝相應(yīng)的包:
kernel-devel-3.10.0-1062.1.2.el7.x86_64.rpm
在官網(wǎng)下載了對(duì)應(yīng)的包,并安裝。啟動(dòng) vagrant:
#啟動(dòng)虛擬機(jī)
vagrant up
#進(jìn)入虛擬機(jī)
vagrant ssh
大功告成!
想必大家的童年都看過《七龍珠》吧,里面的布爾瑪家族發(fā)明的萬能膠囊,可謂是高科技產(chǎn)品啊,一個(gè)小小的膠囊,什么摩托、汽車、床、房子只要打一響指就變出來了。好處當(dāng)然是很多啦,這么高科技的東西要是在現(xiàn)實(shí)中要是存在的話就牛B了,理想是好的,現(xiàn)實(shí)是在未來幾十年或者根本不可能開發(fā)出這樣的膠囊,但是在程序員的世界里,不可能往往是可能的。這個(gè)“萬能膠囊”就是Vagrant。
Vagrant 是一個(gè)用來構(gòu)建和管理虛擬機(jī)環(huán)境的工具。Vagrant 有著易于使用的工作流,并且專注于自動(dòng)化,降低了開發(fā)者搭建環(huán)境的時(shí)間,提高了生產(chǎn)力。解決了“在我的機(jī)器上可以工作”的問題。
Vagrant 是為了方便的實(shí)現(xiàn)虛擬化環(huán)境而設(shè)計(jì)的,使用 Ruby 開發(fā),基于 VirtualBox 等虛擬機(jī)管理軟件的接口,提供了一個(gè)可配置、輕量級(jí)的便攜式虛擬開發(fā)環(huán)境。使用 Vagrant 可以很方便的就建立起來一個(gè)虛擬環(huán)境,而且可以模擬多臺(tái)虛擬機(jī),這樣我們平時(shí)還可以在開發(fā)機(jī)模擬分布式系統(tǒng)。
作為一個(gè)php后端開發(fā)者,最麻煩的最基礎(chǔ)的那就是安裝部署開發(fā)環(huán)境了,一個(gè)服務(wù)器的環(huán)境設(shè)計(jì)LNMP、redis、mongo等等需要的一些服務(wù)支撐,而每一次入職的新員工都要重新花費(fèi)半天甚至一天時(shí)間來安裝開發(fā)環(huán)境。而有了Vagrant,只需要直接將已經(jīng)打包好的 package(里面包括開發(fā)工具,代碼庫(kù),配置好的服務(wù)器等)拿過來就可以工作了,這對(duì)于提升工作效率非常有幫助。
下載地址:https://www.virtualbox.org/wiki/Downloads
下載地址:https://www.vagrantup.com/downloads.html
PS:安裝完后就可以在終端輸入 vagrant 命令了。
box 是一個(gè)打包好的操作系統(tǒng)(萬能膠囊),是一個(gè)后綴名為 .box 的文件,其實(shí)是一個(gè)壓縮包,里面包含了 Vagrant 的配置信息和 VirtualBox 的虛擬機(jī)鏡像文件。vagrant up 啟動(dòng)虛擬機(jī)是基于 box 文件的,因此在啟動(dòng)虛擬機(jī)前必須得把 box 文件準(zhǔn)備好。或者也可以在啟動(dòng)的時(shí)候指定遠(yuǎn)程 box 地址,在這里我把 box 文件下載下來,然后啟動(dòng)時(shí)指定該文件。
1、在你的操作系統(tǒng)上新建一個(gè)目錄,在當(dāng)前目錄下執(zhí)行目錄:
要是你本地有打包好的box(例:test.box),要是沒有你可以執(zhí)行遠(yuǎn)程的box文件地址(例:vagrant開源社區(qū)提供了很多box的下載地址)
vagrant box add test . box
查看box是否創(chuàng)建成功
vagrant box list
2、初始化上面的box
vagrant init test . box
初始化后就會(huì)產(chǎn)生一個(gè)vagrantfile的文件,這個(gè)可以說是“萬能膠囊”說明書,里面是vagrant虛擬機(jī)的配置內(nèi)容。
3、啟動(dòng)vagrant
vagrant up
4、連接vagrant
vagrant ssh