Windows下使用vagrant以及Oracle VM Virtualbox部署虛擬機器

Jordan_Lierge發表於2020-11-12

vagrant的邏輯

vagrant是一個軟體,可以用來自動化虛擬機器的安裝和配置過程。vagrant最重要的是vagrantfile,使用它來控制虛擬機器的啟動、網路環境配置等等。然後就可以快速的使用映象啟動已經配置好的虛擬機器,不必像VMware一樣有繁瑣的步驟。

環境搭建

vagrant的依賴

因為是要配置虛擬機器,所以自然需要虛擬機器程式(VirtualBox)和被虛擬的作業系統映象(包括Centos,Ubuntu等)。在vagrant中,稱虛擬機器程式為provider,稱映象為box

相關依賴的下載

1.在vagrant官方下載
連結: 點選下載vagrant.
2.下載virtualbox
連結: 點選下載virtualbox.
3.下載要使用的box
(1)連結: 進入box搜尋連結.找到自己要使用的box,我這裡使用centos7,直接在搜尋框下面就有,點選進去。點選進入centos7
(2)點選對應的版本,這裡我選擇最新的v2004.01。跳轉之後再選擇同樣的版本,這時候會跳轉到該版本的詳情頁面。點選箭頭部分

=====================================================================

(3)而下載地址就是由該頁面的地址+/providers/virtualbox.box來組成。在這裡插入圖片描述
所以最終的下載地址為:
https://app.vagrantup.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box

(4)把官方上面的box下載好放在指定的位置,我這裡選的是D:\Download\vagrant_box\virtualbox.box,為了方便起見,我把virtualbox.box重新命名為centos7.box

如何部署

(1) 安裝好Vagrant後,新建一個空資料夾,將其路徑視作專案的根路徑。然後SHIFT+滑鼠右鍵在此處開啟powershell,鍵入命令:vagrant init。它會自動生成一個Vagrantfile。

(2)更改Vagrantfile主要是這兩行要有所改動

(3)將box檔案新增到vagrant的box管理系統中

*基本語法:vagrant box add {title} {url}* 
eg:vagrant box add centos7 D:\Download\vagrant_box\virtualbox.box
vagrant box list     -----可以檢視所有已新增的box。
vagrant box remove centos7     -----可以移除新增的box

(4) 啟動

在專案根目錄下執行:     vagrant up
在專案的根目錄下執行:   vagrant destroy
Vagrant會將box從provider中解除安裝並刪除

(5) 登入

方式一:使用祕鑰登入
初次登入賬號:root    密碼: vagrant

在Oracle VM VirtualBox登陸以後,輸入ip add
在這裡插入圖片描述
在這裡插入圖片描述
首先使用vagrant使用者名稱登入,祕鑰使用D:\APPData\vagrant\centos7-1.vagrant\machines\default\virtualbox\private_key,密碼還是vagrant

在這裡插入圖片描述
登入以後再切換到root
在這裡插入圖片描述

方式二:使用賬號密碼登入

新建立的虛擬機器可以直接在virtualbox使用root的賬號(root)密碼(vagrant)登入,登陸成功以後進行如下操作:

1.將 ssd_config 裡 PermitRootLogin屬性 改為yes ,並把前面的# 去掉。
2.PasswordAuthentication 改為yes 並且去掉 #
3.輸入:wq命令 儲存並退出。
4.systemctl restart sshd 

再用xshell連結對應的IP地址即可實現賬號密碼登入。

複製虛擬機器

目的:為了得到一個和被複制的虛擬機器一模一樣的虛擬機器
邏輯:比如說虛擬機器A是我使用vagrant的box建立的一個機器,可是我所想要的虛擬機器都是要裝好python3的,但是官方的box是python2的,這時就要用到虛擬機器複製。首先在A中部署好python3,然後把A這臺虛擬機器用命令壓縮為一個新的box,假如我再建立一個虛擬機器B,B就可以使用A壓縮後的box,使得B在建立好以後和A一模一樣,也有python3,除此外還可以在A中直接配置好使用賬號密碼登入,這樣B在建立好以後也可以使用賬號密碼登入了

1.首先關閉被複制的那臺虛擬機器

2.使用powershell進入當前虛擬機器的目錄

執行:vagrant package --output centos7_and_py3.box

這個centos7_and_py3.box是自定義的,因為我在之前做好的虛擬機器中下載了python3,這一條語句就是把我做好的這個虛擬機器壓縮為一個名為centos7_and_py3.box的映象包
這個centos7_and_py3.box是自定義的,因為我在之前做好的虛擬機器中下載了python3,這一條語句就是把我做好的這個虛擬機器壓縮為一個名為centos7_and_py3.box的映象包

3.將上面執行的命令得到的壓縮好的box檔案新增到vagrant的box管理系統中

 vagrant box add centos7py3_copy .\centos7_and_py3.box
(注意前面提到的基本語法:vagrant box add {title} {url}

4.進入一個新的目錄,生成新的虛擬機器的vagrantfile

vagrant init centos7py3_copy
注意init後面的config.vm.box的值要和上一點即第三點中的title相同

5.修改vagrantfile

注意只修改網路
注意只修改網路

6.啟動 vagrant up

碰到Which interface should the network bridge to? 
我輸入了1,沒有問題

相關文章