目錄
- 前言
- 一、軟件下載及安裝
- 1.下載
- 2.安裝
- 擴展:
- 二、創建一個虛擬機
- 1.Vagrant官方鏡像倉庫
- 三、使用遠程工具連接虛擬機
- 1.修改相關配置文件
- 四、虛擬機克隆及使用
- 1.通用配置
- 2.簡單搭建一個java環境
- 3.克隆虛擬機
- 1.重命名虛擬機(可選)
- 2.打包指定名稱的虛擬機
- 五、異常情況處理
- 1.up啟動報錯
- 2.身份驗證失敗
前言
????目前我用虛擬機主要作用是模擬linux系統下當服務器使用,直接用vmware虛擬機或者VirtualBox虛擬機進行搭建相關開發環境耗時,并且很多步驟冗余,至此想要探尋簡化配置步驟,并且可以一次搭建多次復用的方式,我們從使用Vagrant開始,然后我們還有去探索克隆虛擬機,搭建完基礎環境之后移植到其他機器也能快速使用的方法。
一、軟件下載及安裝
我這里是win環境下安裝相關軟件。博客那沒多,要搞就搞點不一樣的,都安裝最新版本。
1.下載
Vagrant下載
截止2024/7/8最新版本為2.4.1版本,我是win64位系統,選擇amd64,如果你的電腦是非常舊的版本或32位選擇I686
VirtualBox下載
我就想要下載舊一些的版本,他可能穩定或者相關資料更多一些,這里也提供舊版本下載提示。
直達鏈接
2.安裝
①安裝VirtualBox
在選擇安裝位置時,你是否也把目錄切換到了其他磁盤而不是默認的系統盤
解決方式有兩種
第一種:不喜歡折騰的同學,直接換回系統盤安裝。
第二種:分兩種情況
第一種情況:選擇其他盤后,建一個根目錄,把它安裝到該目錄下。需要做一些準備。
例如我把它安裝到了某個目錄下:
需要創建完該文件夾后執行如下命令,以管理員身份運行cmd程序,執行如下幾行代碼。
icacls A:\VirtualBox /reset /t /c
icacls A:\VirtualBox /inheritance:d /t /c
icacls A:\VirtualBox /grant *S-1-5-32-545:(OI)(CI)(RX)
icacls A:\VirtualBox /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA)
icacls A:\VirtualBox /grant *S-1-5-11:(OI)(CI)(RX)
icacls A:\VirtualBox /deny *S-1-5-11:(DE,WD,AD,WEA,WA)
執行完畢,重新安裝并且選擇你執行過的目錄即可安裝。
情況2:更換其他磁盤,并且不是放在更目錄,此時你需要把指定目錄和對應的根目錄都執行一次,我嫌麻煩就沒這么搞了。
②安裝Vagrant
這個就沒啥好選的了,最新版沒找到選擇安裝目錄的位置。在最后一步時,你選擇了yes會立刻重啟你的電腦。
其他情況暫時未遇到問題。
擴展:
①
icacls工具:管理文件和目錄的訪問控制列表,這些操作類似于linux對目錄用戶組進行權限分配和設置。資料來源網絡,如果錯誤還請指正。
1- icacls A:\VirtualBox /reset /t /c
這個命令將重置A:\VirtualBox
目錄及其所有子目錄和文件的權限為默認設置。/t
參數表示操作遞歸應用于所有子目錄和文件,/c
參數則表示如果遇到錯誤,命令會繼續處理其他項。
2- icacls A:\VirtualBox /inheritance:d /t /c
此命令禁用了A:\VirtualBox
目錄及其子目錄的繼承權限。inheritance:d表示刪除現有的繼承權限條目,/t
和/c
與上一個命令相同
3- icacls A:\VirtualBox /grant *S-1-5-32-545:(OI)(CI)(RX)
這個命令向A:\VirtualBox
目錄及其子目錄授予對用戶組*S-1-5-32-545
(通常是本地用戶組)的讀取權限。(OI
)表示對象繼承,(CI
)表示容器繼承,(RX
)是讀取權限的縮寫。
4- icacls A:\VirtualBox /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA)
此命令拒絕A:\VirtualBox
目錄及其子目錄中*S-1-5-32-545
用戶組的多種權限:刪除、寫入數據、添加子目錄、寫入擴展屬性、寫入屬性等。
5- icacls A:\VirtualBox /grant *S-1-5-11:(OI)(CI)(RX)
類似于第三個命令,但這次是向*S-1-5-11
(通常是管理員組)授予讀取權限。
6- icacls A:\VirtualBox /deny *S-1-5-11:(DE,WD,AD,WEA,WA)
同第四個命令,但這次是對*S-1-5-11
用戶組拒絕多種權限。
②
如果你的電腦沒有開啟虛擬化,需要進入bois進行開始虛擬化設置!!!每個人電腦多少有一些差異,如果沒有找到請按照自己電腦型號去網上查一下在哪塊開啟
二、創建一個虛擬機
1.Vagrant官方鏡像倉庫
倉庫地址
我們使用vagrant 進行虛擬機的創建,使用他對應的官方鏡像進行linux系統的創建。
相關命令在他的文檔中有體現
初始化一個centos7虛擬機,啟動虛擬機。
cmd執行如下命令
vagrant init centos/7
vagrant up
啟動虛擬機
vagrant up
三、使用遠程工具連接虛擬機
1.修改相關配置文件
使用遠程工具連接虛擬機。
這里的網絡和之前博客不太一樣,注意甄別。找到對應的虛擬機網卡信息
ipconfig
修改vagrant配置文件,把對應的ip設置為靜態ip,在192.168.56.xx網段下即可
我的在第35行
首先,使用win的cmd進行遠程ssh連接,修改一下linux中的一些ssh連接設置。
vagrant ssh
切換root用戶,密碼為:vagrant
·改參數值,找到 PasswordAuthentication 改為yes
vi /etc/ssh/sshd_config
剛進入文件時,使用vi的搜索功能。
/Passw
此時定位到對應的內容后,按i
鍵進行編輯。
:wq
重啟ssh服務
systemctl restart sshd
此時使用你自己的ssh工具即可進行訪問
ip:192.168.56.10
username:root
password:vagrant
四、虛擬機克隆及使用
1.通用配置
更換一下國內yum源
先備份原有配置
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
創建一個新的repo文件
sudo vi /etc/yum.repos.d/alimirror.repo
編輯新的源
[alimirror]
name=alimirror
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
enabled=1
清理緩存并更新元數據
yum clean all
yum makecache fast
更新yum
yum update
安裝vim
yum install -y vim-enhanced
2.簡單搭建一個java環境
下載一個jdk包
此處省略相關配置環境變量等,主要為了驗證克隆之后是否能生效和使用。
3.克隆虛擬機
為虛擬機配置環境變量,這塊不需要非得抄我的知道怎么配環境變量的同學自行配置即可
1.
1.重命名虛擬機(可選)
為什么要對虛擬機重命名?
因為這樣克隆虛擬機時,可以指定克隆那個虛擬機,當然你如果不想進行重命名,也有支持打包當前運行中的虛擬機方式。但是如果你同時需要啟動多個虛擬機時,這塊隨意,不影響功能使用,這塊也稍微麻煩一些,不想麻煩的可以跳過,個人感覺用處不大。
查詢當前虛擬機名稱
vagrant status
就叫default
重命名虛擬機名稱,為第一步使用vagrant 打包做準備。
先關閉當前虛擬機。
1.修改Vagrantfile配置文件,增加虛擬機名稱配置,就挨著config.vm.box配置再上放增加一行即可,結束時需要增加end。
config.vm.define "vm1" do |node|xxxxconfig.vm.box = "centos/7"end
示例:
Vagrant.configure("2") do |config|config.vm.define "vm1" do |node|node.vm.box = "ubuntu/focal64"# ... 其他配置 ...end
end
我命名為vm1
config.vm.define "vm1" do |node|
2.重命名還未結束,還需要根據uuid更新底層邏輯
vboxmanage list vms
這個命令如果提示不是內外部命令,那就是你沒有成功配置box的環境變量。
3.更新虛擬機名稱
vboxmanage modifyvm {UUID} --name "虛擬機名稱"
我的命令
vboxmanage modifyvm {604009aa-cd0c-40a6-978a-380b23c8b873} --name "vm1"
再次查詢當前虛擬機名稱
vagrant status
至此重命名完成。
2.打包指定名稱的虛擬機
方式1:cmd命令方式(已經驗證成功,可以正常使用)
使用vagrant命令打包當前的虛擬機
①查詢所有虛擬機列表
vboxmanage list vms
打包指定名稱的虛擬機
②你想把打包的文件放到哪里,此時你就使用cmd進行切換目錄
示例
cd A:\DATA\copy
此時執行打包命令后會把打包的文件放在該目錄下
③進行打包
示例打包名為vm1虛擬機,輸出文件為vagrant01.box
vagrant package --base vm1 --output copy.box
這一步非常的耗時!!!,并且控制臺無進度條,此時需要耐心等待。我的文件8個多G,從任務管理器能看出磁盤io每秒達到50mb左右的速度,也可能我電腦拉胯些比較慢。
兩種方式判斷是否完成
第一種:控制臺出現不在阻塞之后Compressing即可
第二種:保存目錄的文件不再是0kb大小
④將打包好的box文件add到vagrant
copy 可以理解為虛擬機的名字copy ,copy .box是我們打包的文件名稱。
注意:需要切換到copy.box目錄再執行下方命令
vagrant box add copy copy.box
⑤初始化一個新的vagrant環境
vagrant init copy
執行完成后只有一個Vagrantfile文件
⑥編輯這個新的Vagrantfile文件
Vagrant.configure("2") do |config|config.vm.define "copy"config.vm.box = "copy"config.vm.network "private_network", ip: "192.168.56.20"config.ssh.username = "vagrant"config.ssh.password = "vagrant"
end
全量替換成我的,如果你不是交copy則替換你對應的虛擬機名稱,ssh這塊是因為解決某個異常添加的,具體異常請在下方查閱。
⑦更改默認的虛擬機位置
選擇其他,找到你init的目錄即可
啟動這個虛擬機
vagrant up copy
此時啟動后virtual box頁面會有一個虛擬機,但是名稱不是我們起的copy,而是一個很長一串的名稱,加上copy內容,這塊還在研究,不影響使用。
⑧再次修改ip地址
進入控制臺,使用默認的username和password進行登錄,在切換到root用戶
vagrant ssh
username和password都為
vagrant
su root
vagrant
先查詢一下ip地址是否還是之前打包的ip地址
ip addr show
我這塊已經手動改過了,你的話應該還是192.168.56.10,此時需要在服務器端更改一下。
更改ip地址
切換到該目錄下,查詢自己需要更改的文件,我的文件是eth1文件,你的可能不是
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth1
修改完保存重啟網路服務一下
systemctl restart network
驗證一下是否生效
ip addr show eth1
至此以命令方式的克隆虛擬機完成,之前搭建的java環境也正常使用。
方式2:virtual box方式打包(未驗證成功,正在解決問題)
復制成功之后,還是需要把對應的文件夾放到系統盤的默認路徑下,否則檢測不到(這塊需要再研究一下,目前只能是放在原來虛擬機的文件夾下)
打開我們復制的這個虛擬機文件
正在解決ing
五、異常情況處理
vagrant官方網站
有問題實在解決不了,那就只能肝官網文檔了。
1.up啟動報錯
The machine with the name ‘copy’ was not found configured for this Vagrant environment.
解決方式
Vagrantfile文件增加配置內容
config.vm.define "copy"
2.身份驗證失敗
copy:Warning: Authentication failure. Retrying…
直接使用明文username和password,目前還沒有進行更加深入的研究,只用這個方式先解決,如果大家有其他優雅的方式歡迎一起交流討論。
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"