🌲 前言 🌲
別說我是標題黨,上來我就直接教你裝系統,往下翻,👌🏻 不慫,就是干!!!學不會的,找不到女朋友!😏
?? ヾ(?°?°?)ノ゙ ??
首先下載安裝 Vagrant 和 VirtualBox ,不用知道是啥玩意,安裝完軟體之后,打開 cmd 或者 終端 執行以下命令即可安裝作業系統,就這么簡單!
🙉 以下列出主流系統安裝方式 🙉 :
🌞 安裝Windows10 系統 🌞
vagrant init galppoc/windows10
vagrant up
? 安裝 macOS 系統 ?
vagrant init jhcook/macos-sierra
vagrant up
🧡 安裝 Linux/Unix 系統 🧡
① centos:
vagrant init generic/centos7
vagrant up
② Ubuntu:
vagrant init generic/ubuntu2010
vagrant up
③ redhat:
vagrant init generic/rhel7
vagrant up
④ fedora:
vagrant init generic/fedora32
vagrant up
⑤ oracle linux:
vagrant init generic/oracle7
vagrant up
看不懂?沒有關系,直接輸入就行!!!
?? 以上只列出常用主流作業系統,并不是僅僅這些,Vagrant 支持所有作業系統安裝,只要能安裝的,都可以!
?? 想要入門?想要解鎖 🔓 更多玩法?看下去,帶你玩轉 Vagrant !!!??

?? Vagrant 使用指南大全 ??
- 🌲 前言 🌲
- 🌻 Vagrant 簡介 🌻
- ?? 入門玩法:Vagrant 安裝 ??
- ?? 初階玩法:Vagrant 常用命令 ??
- 1?? Vagrant 基礎命令
- 2?? Vagrant Box 管理
- 3?? Vagrant 虛擬機系統命令
- 4?? Vagrant 插件管理
- 🌀 進階玩法:Vagrant 插件 🌀
- ?? 高階玩法:Vagrant 配套工具 ??
- ① ngrok
- ② packer
- 💦 超神玩法:Vagrant 卸載 💦
- 1?? Windows系統
- 2?? Linux系統
- 3?? macOS系統
- ? 寫在最后
🌻 Vagrant 簡介 🌻
Vagrant - 一款用于管理虛擬機的命令列實用軟體,用 Ruby 語言開發而成,換言說,可以省去你使用虛擬機創建作業系統的所有操作,比如創建虛擬機,掛載鏡像檔案,一步步點擊安裝;使用 Vagrant ,這些都不需要做了,簡簡單單 2 行命令,快速創建屬于你個人的系統,

?? 入門玩法:Vagrant 安裝 ??
😄 Vagrant 的安裝 Very easy~ ,直接在官網下載安裝包👇🏻:
官網下載地址:https://www.vagrantup.com/downloads

安裝完后,方便使用,啟用命令列自動補全:
vagrant autocomplete install --bash --zsh

o( ̄▽ ̄)d,安裝完后,重新啟動終端,嘗試輸入部分命令 vagr ,然后直接按 Tab 鍵自動帶出完整命令,
?? 初階玩法:Vagrant 常用命令 ??
1?? Vagrant 基礎命令
查看 Vagrant 幫助
vagrant --help

?? 顯而易見,這個命令就是幫助我們了解 Vagrant 有哪些命令,以及哪些功能,如何使用,
查看 Vagrant 版本
vagrant --version

查看當前 Vagrant 版本,
查看 Vagrant 當前所有已安裝系統
vagrant global-status

通過該命令可以查看當前系統已安裝的虛擬機系統詳細資訊,非常方便,
2?? Vagrant Box 管理
本節主要介紹 Vagrant Box 的基本管理命令:

查看所有已添加 box
vagrant box list

此命令可以列出所有已添加的 box ,
添加新的 box
vagrant box add /Volumes/Lucifer/vagrant/centos79-oracle11g-vb/centos7.9 --name=centos7

下載 box 到本地,指定本地 box 添加,名稱為centos7,
移除已添加 box
vagrant box remove centos7

本示例移除名為 centos7 的 box,
3?? Vagrant 虛擬機系統命令
初始化虛擬機系統
vagrant init luciferliu/oracle11g

初始化虛擬機系統之后,會自動生成一個Vagrantfile檔案,可自定義編輯,玩轉 Vagrant 關鍵,
校驗 Vagrantfile 檔案
vagrant validate

當你編輯好一個 Vagrantfile 之后,不確定撰寫是否正確,可以使用該命令進行驗證是否正確,
啟動虛擬機系統
vagrant up --provider=virtualbox

用默認虛擬機 virtualbox 啟動虛擬機系統,程序中顯示,如果本地沒有添加過 box,vagrant up 啟動后會自動下載添加,
連接虛擬機系統
vagrant ssh

通過該命令可以無需常規的 SSH 方式,快速連接系統,默認用戶為 vagrant,密碼為 vagrant,
查看虛擬機系統狀態
vagrant status

顯而易見,查看當前虛擬機系統的運行狀態,
多載虛擬機系統
vagrant reload

顧名思義,重新加載你的虛擬機系統,當你修改 Vagrantfile 之后需要生效,無需關閉虛擬機系統,執行該命令即可生效,
關閉虛擬機系統
vagrant halt

執行關閉命令后,虛擬機系統將會立刻關閉,
打包虛擬機系統
vagrant package

為什么要打包系統?很簡單,你可以打包后備份它,可以分享它給你的朋友,可以用來作業同步一鍵部署開發環境,
洗掉虛擬機系統
vagrant destory

洗掉命令將會洗掉你的虛擬機系統,包括所有檔案,全都消失無蹤,慎用 ??,
4?? Vagrant 插件管理
本節主要介紹 Vagrant 插件的管理命令:

查看已安裝插件
vagrant plugin list

顯示你安裝的所有 Vagrant 插件,
安裝插件
vagrant plugin install vagrant-share

卸載插件
vagrant plugin uninstall vagrant-share

修復插件
vagrant plugin repair

插件出現問題時,可以使用修復命令來進行修復,
更新插件
vagrant plugin update

既然是插件,當然需要經常更新,使用更新命令可以更新你的插件,
🌀 進階玩法:Vagrant 插件 🌀
既然上面講到插件了,那就推薦一下常用插件,剛安裝的 Vagrant 相當于一個沒有武裝的戰士,想要擁有強大的戰斗力,就需要用插件來全副武裝,Vagrant 具有許多開箱即用的強大功能,可以讓你的環境啟動并運行,
?? 給大家分享下 Plugin 網站 :https://vagrant-lists.github.io/#plugins ??
👌🏻 這里分享下我已安裝的幾個插件:
- vagrant-parallels (2.2.3, global)
用于 Parallels Desktop 虛擬機的支持插件- vagrant-proxyconf (2.0.10, global)
用于設定虛擬機代理- vagrant-share (2.0.0, global)
通過插件可以分享你的虛擬機環境給朋友- vagrant-mutate (1.2.0, global)
使用插件可以轉換你的 box ,比如從 virtualbox 到 kvm
?? 安裝方式:
vagrant plugin install vagrant-parallels
vagrant plugin install vagrant-proxyconf
vagrant plugin install vagrant-reload
vagrant plugin install vagrant-share
vagrant plugin install vagrant-mutate
vagrant plugin list
?? 順便給大家分享一個解決 Vgrant 插件安裝慢的方法: ??
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem sources -l

沒錯,就是替換 RubyGems 的源,確保只有這一個源,如果失靈,就換回去,😌 慢就慢點,總比不能用強,
?? 高階玩法:Vagrant 配套工具 ??
① ngrok
② packer
① ngrok:
ngrok 是什么?別問(`へ′)ノ,問就告訴你:用來做內網映射的😄,
接下來教你怎么用 ngrok ,將你的虛擬機環境分享給全世界各地的 People 使用!!!
第一步:安裝ngrok,官網下載安裝包,解壓是個可執行檔案,直接雙擊使用 o( ̄▽ ̄)d,
官網下載地址:https://dashboard.ngrok.com/get-started/setup
第二步:需要注冊一個 ngrok 用戶,獲取授權碼,來授權本地機器,
ngrok authtoken 你的授權碼

第三步:測驗 ngrok 是否可用

ngrok http 80

打開你的瀏覽器訪問 http://127.0.0.1:4040,如果能打開,說明 👌🏻 啦,恭喜你 🎉 !
第四步:使用 vagrant-share 插件,分享你的虛擬機:
這里有個小前提:需要環境變數中配置 ngrok ,否則 vagrant 無法獲取到改命令:
export VG_HOME='/opt/vagrant'
export PATH=$PATH:$VG_HOME/bin
注意:我是將解壓的 ngrok 可執行工具放入 /opt/vagrant/bin 目錄下,參考如上配置即可,
- 使用 ssh 方式分享你的主機:
服務端開啟共享:
注意:程序中需要輸入兩次密碼,用于提供給客戶端來進行登錄,
vagrant share --ssh

如果服務端執行之后,顯示上圖這樣,說明已經共享成功,客戶端可以進行訪問,
客戶端連接:
模擬下其他朋友連接我的虛擬機環境:
vagrant connect --ssh orange_amigo:george_botanic@forward

這邊輸入密碼后,已經連接進虛擬機環境了,我這是一套 Oracle RAC 環境的其中一個節點:

這里的 orange_amigo:george_botanic@forward 是自動生成的,建議根據實際情況填寫,
② packer:
packer 是什么?別問(`へ′)ノ,問就告訴你:用來定制你的專屬 Box 的😄,
接下來教你怎么用 packer ,打造為你量身定制的虛擬機環境!!!
第一步:安裝 packer ,官網下載安裝包,解壓是個可執行檔案,直接雙擊使用 o( ̄▽ ̄)d,
官網下載地址:https://www.packer.io/downloads

這里有個小前提:需要環境變數中配置 packer ,否則 vagrant 無法獲取到改命令:
export VG_HOME='/opt/vagrant'
export PATH=$PATH:$VG_HOME/bin
注意:我是將解壓的 packer 可執行工具放入 /opt/vagrant/bin 目錄下,參考如上配置即可,

第二步: 下載一個centos或者windows鏡像,也就是安裝包,本次以centos為例吧:
下載地址:https://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso

這里我已經成功下載完成,需要進行一下 checksum 校驗一下:
shasum -a 256 /Users/lpc/Downloads/CentOS-7-x86_64-Minimal-2009.iso

順便記錄一下校驗碼:07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a
第三步: 這里我們借用 bento 前輩寫好的模板進行打包,首先通過 git clone 專案:
Github 地址:https://github.com/chef/bento
git clone https://hub.fastgit.org/chef/bento.git

第四步: 打開剛 git 的專案,自定義 packer json 檔案:

根據 bento 大神的 centos-7.9-x86_64.json ,我們自定義一個新的 json 檔案:
{
"builders": [
{
"boot_command": [
"<up><wait><tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `ks_path`}}<enter><wait>"
],
"boot_wait": "5s",
"cpus": "{{ user `cpus` }}",
"disk_size": "{{user `disk_size`}}",
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"guest_additions_url": "{{ user `guest_additions_url` }}",
"guest_os_type": "RedHat_64",
"hard_drive_interface": "sata",
"headless": "{{ user `headless` }}",
"http_directory": "{{user `http_directory`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}",
"memory": "{{ user `memory` }}",
"output_directory": "{{ user `build_directory` }}/packer-{{user `template`}}-virtualbox",
"shutdown_command": "echo 'vagrant' | sudo -S /sbin/halt -h -p",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_timeout": "10000s",
"ssh_username": "vagrant",
"type": "virtualbox-iso",
"virtualbox_version_file": ".vbox_version",
"vm_name": "{{ user `template` }}"
},
{
"boot_command": [
"<up><wait><tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `ks_path`}}<enter><wait>"
],
"boot_wait": "5s",
"cpus": "{{ user `cpus` }}",
"disk_size": "{{user `disk_size`}}",
"guest_os_type": "centos",
"http_directory": "{{user `http_directory`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}",
"memory": "{{ user `memory` }}",
"output_directory": "{{ user `build_directory` }}/packer-{{user `template`}}-parallels",
"parallels_tools_flavor": "lin",
"prlctl_version_file": ".prlctl_version",
"shutdown_command": "echo 'vagrant' | sudo -S /sbin/halt -h -p",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_timeout": "10000s",
"ssh_username": "vagrant",
"type": "parallels-iso",
"vm_name": "{{ user `template` }}"
}
],
"post-processors": [
{
"output": "{{ user `build_directory` }}/{{user `box_basename`}}.{{.Provider}}.box",
"type": "vagrant"
}
],
"provisioners": [
{
"environment_vars": [
"HOME_DIR=/home/vagrant",
"http_proxy={{user `http_proxy`}}",
"https_proxy={{user `https_proxy`}}",
"no_proxy={{user `no_proxy`}}"
],
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'",
"expect_disconnect": true,
"scripts": [
"{{template_dir}}/scripts/update.sh",
"{{template_dir}}/../_common/motd.sh",
"{{template_dir}}/../_common/sshd.sh",
"{{template_dir}}/scripts/networking.sh",
"{{template_dir}}/../_common/vagrant.sh",
"{{template_dir}}/../_common/virtualbox.sh",
"{{template_dir}}/../_common/vmware.sh",
"{{template_dir}}/../_common/parallels.sh",
"{{template_dir}}/scripts/cleanup.sh",
"{{template_dir}}/../_common/minimize.sh"
],
"type": "shell"
}
],
"variables": {
"box_basename": "centos-7.9",
"build_directory": "../../builds",
"build_timestamp": "{{isotime \"20060102150405\"}}",
"cpus": "2",
"disk_size": "65536",
"git_revision": "__unknown_git_revision__",
"guest_additions_url": "",
"headless": "",
"http_directory": "{{template_dir}}/http",
"http_proxy": "{{env `http_proxy`}}",
"https_proxy": "{{env `https_proxy`}}",
"iso_checksum": "07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a",
"iso_name": "CentOS-7-x86_64-Minimal-2009.iso",
"ks_path": "7/ks.cfg",
"memory": "1024",
"mirror": "",
"mirror_directory": "Users/lpc/Downloads",
"name": "centos-7.9",
"no_proxy": "{{env `no_proxy`}}",
"template": "centos-7.9-x86_64",
"version": "TIMESTAMP"
}
}
修改內容如上,讀者可根據實際環境填寫,

需要注意:讀者主要修改的部分為:
1、iso的存放位置:

2、iso 的 checksum 結果和 iso 名稱:

修改以上兩部分即可,
第四步: 啟動 packer 進行打包:
cd /Volumes/DBA/vagrant/packer/packer_templates/centos
packer build -only=virtualbox-iso centos-7.9-x86_64.json
這里的 -only=virtualbox-iso 是指只創建 virtualbox 的 box 檔案,

執行程序中,我們什么都不需要干,只需要安靜的做個美男子,等著就完事兒了,😄
🎥 小劇場:
閑著也是閑著,研究了一下大神的腳本,發現有一個腳本挺有意思的,拿出來分享一下:

?? 就是這個腳本,干什么的呢?
簡單來說:當我們安裝完一個虛擬機系統之后,想要進行打包時,系統內一些多余的空間或者垃圾會占空間,導致打包出來的 box 過大,使用此腳本會清理這些垃圾和多余空間,使得打包出來的 box 非常的小,基本跟初始鏡像的大小一致,?? 可以說是灰常 Nice 的小玩意兒了!!!愛了愛了,收藏一波,
言歸正傳,經過一段時間的等待后,我們的 packer 也跑完了:

😰 報錯了,說是訪問 GitHub 失敗了,阿西吧,外國大神寫的腳本,國內 GitHub 難受啊,想辦法解決下:
在 networking.sh 腳本中加入如下內容:
# modify by luciferliu for github raw.githubusercontent.com:443; Connection refused
echo '185.199.108.133 raw.githubusercontent.com' >>/etc/hosts;
echo '185.199.109.133 raw.githubusercontent.com' >>/etc/hosts;
echo '185.199.110.133 raw.githubusercontent.com' >>/etc/hosts;
echo '185.199.111.133 raw.githubusercontent.com' >>/etc/hosts;
ping raw.githubusercontent.com
測驗一下是否可以:

👌🏻,沒有毛病啊,老鐵,哈哈,忘記 linux ping不會自動停止,無限 ping 了,😓 重來吧,如果能重來,我要選一下代碼!😄 ,修改為:
ping raw.githubusercontent.com -c 10
我們只 ping 10次哈,意思一下就行!

再一次,事不過三啊,給爺沖!!!

🎉 皇天不負有心人,成了 Nice!👌🏻

打包完之后的 box 才 300 多M,來測驗一下能不能用吧:
vagrant box add /Volumes/DBA/vagrant/packer/bento/builds/centos-7.9.virtualbox.box --name=centos79
vagrant init centos79
vagrant up --provider=virtualbox

連接使用:
vagrant ssh

使用沒有毛病,很好很強大,到這 packer 也就講完啦,😄
關于高階玩法,我就只講了兩個,一個是
gnrok和 vagrant-share 插件組合使用,一個是packer打包 box,后續更多的玩法,放到后面慢慢講,我也在慢慢的研究,慢慢玩,大家有興趣可以 關注博主 一波,😄
💦 超神玩法:Vagrant 卸載 💦
哈哈,都說一切事務的終點就是回到原點,那不就是卸載嘛!😄,為了給大家寫 blog,我前前后后卸載安裝了好多回了,也算是頗有心得,
洗掉 Vagrant 程式將從您的機器中洗掉 vagrant 二進制檔案和所有依賴項, 卸載程式后,您仍然可以使用標準方法重新安裝, 卸載 Vagrant 不會洗掉用戶資料, 此部分下面的部分提供了有關如何從系統中洗掉該目錄的更詳細說明,
1?? Windows系統
使用控制面板的添加/洗掉程式部分卸載,這就不需要我教了吧,ε=(′ο`*))) 實作不行,geek uninstaller 走起,
2?? Linux系統
rm -rf /opt/vagrant
rm -f /usr/bin/vagrant
rm -rf ~/.vagrant.d
3?? macOS系統
sudo rm -rf /opt/vagrant /usr/local/bin/vagrant
sudo pkgutil --forget com.vagrant.vagrant
rm -rf ~/.vagrant.d
在所有平臺上,此目錄位于您的主目錄的根目錄中,并命名為 vagrant.d, 只需洗掉 ~/.vagrant.d 目錄即可洗掉用戶資料, 如果在 Windows 上,此目錄位于 C:\Users\YourUsername.vagrant.d,其中 YourUsername 是本地用戶的用戶名,
? 寫在最后
Vagrant 我也剛接觸不久,如果有玩的厲害的大佬,可以加我好友,一起交流下心得,順便也指點指點,感覺 Vagrant 的可玩度還是挺高的,感興趣的確實可以入手一哈,😄
?? 最后的最后,分享一下自己的其他文章:
- Oracle一鍵安裝腳本
- ? MacOS ? Vagrant 使用 Parallels Desktop 安裝 Oracle 資料庫
- 精心整理Linux各版本安裝包(包括Centos、Redhat、Oracle
Linux)??附下載鏈接??- 花錢都買不到的絕版Oracle資料庫最全版本安裝包(精心整理)附下載鏈接,建議收藏
希望大家多多支持,點擊主頁左側,聯系我 可以添加博主好友 !👌🏻

本次分享到此結束啦~
如果覺得文章對你有幫助,點贊、收藏、關注、評論,一鍵四連支持,你的支持就是我創作最大的動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291033.html
標籤:其他
