2023 Vagrant 一鍵安裝自己的虛擬環境
===
* [name=千神]
參考此[Hackmd語法](https://hackmd.io/@bwMrIJGoSwyHxPVocWmFmw/rJqeVSOrV?type=view)
2023/04/28
:::success
這個是我在工作時, 每次都要重新安裝虛擬環境, 不符合我的DRY原則, 所以我直接做一個教學幫助我以後直接安裝我的虛擬環境
:::
## 此篇文章能幫助
1. 每次安裝環境都要重新拉iso檔, 部屬memory CPU Network, 改GUI, 安裝一堆package
2. 可以在自己喜歡的環境開發, 但是測試部屬上線都是在相同系統, 例如A可以在mac 開發, B可以在Linux開發, 但測試時都是在相同環境
3. 我覺得最重要的, 可以不用多開一個虛擬環境, 直接在本地目錄上開發, 直接同步到虛擬環境中, 有夠方便.
## Pre-work
需要安裝
1. Vagrant
2. Virtual Box
用這篇[教學](https://samkuo.me/post/2020/05/vagrant-virtualbox-devops-tool/) 可以用超快即優雅的方式(2,3行代碼)把這兩個東西都安裝好, 身為程序員應該都很喜歡吧?
:::warning
需要注意的是, Vagrant目前並不支援VBox 7.0以上的版本, 而且Virtual Box 6.0以下的版本不知道為什麼不兼容很多東西, 所以保險起見, 建議安裝6.0 Version
:::
## Vagrant連動
本身Vagrant 其實很簡單, 只需兩行代碼就能幫你把環境建立完畢
```
vagrant init bento/ubuntu-18.04
vagrant up
```
以上代碼中, 他會自動到[Vagrant Cloud](https://app.vagrantup.com/boxes/search)幫你把環境的檔案下載下來, 並自動安裝 (bento/ubuntu-18.04 可以替換成任意網址)
[Ubuntu](https://app.vagrantup.com/bento/boxes/ubuntu-18.04) 的指令在這
[Ubnutu Server](https://app.vagrantup.com/aspyatkin/boxes/ubuntu-18.04-server)的指令在這裡
## 正式開始
1. 首先我們要先創建一個folder來裝vagrant box
```
mdkir ubuntu_bento_18_06_LTS_vbox
```

2. 我把剛剛我從[Ubuntu](https://app.vagrantup.com/bento/boxes/ubuntu-18.04) 這裡下載的box檔案拉進folder裡面
3. 接下來我要初始化, 確認狀態, 並啟動它
```
vagrant init [Box_name] 初始化此box 並創建一個Vagrantfile檔
vagrant box list 查看目前有哪些box(環境)
vagrant status 查看virtual environment 環境是否啟動
vagrant up 啟動虛擬環境
```

## 其他相關
要連上vagrant 可以使用
```
vagrant ssh
```
要關閉vagrant 可以直接使用
```
vagrant halt
```
## 待更新項目
1. 多台虛擬機互通, 並且可連到外網
2. 可以封裝自己environment, 快速一鍵安裝
3. 可以安裝帶有GUI Ubuntu
## Reference
[最詳細的Vagrant教學](https://imququ.com/post/vagrantup.html)
1. [Vagrant的進階命令](https://blog.robodock.net/shi-yong-vagrant-qing-song-guan-li-xu-ni-ji/)
2. [Vagrant用多網卡方式 實現外網內網, 多重互通](https://blog.csdn.net/xuwenjingrenca/article/details/127875187)
3. [Vagrant Clound中 Ubuntu GUI box file](https://app.vagrantup.com/dmhughes/boxes/ubuntu-18.04-desktop-gui)
4. [另一種方式安裝帶有GUI介面的Ubuntu](https://qiita.com/MasanoriIwakura/items/5348331647b9d7893097)
5. [還是另一種方式安裝Ubuntu GUI](https://techracho.bpsinc.jp/anekawa/2017_12_25/50414)
6. [Ubuntu Server & Ubuntu Desktop Difference](https://worktile.com/kb/p/38286)
7. [Vagrant搭建一套集群系統](https://blog.csdn.net/u013961139/article/details/119708080?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-119708080-blog-120797892.235%5Ev32%5Epc_relevant_increate_t0_download_v2_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-119708080-blog-120797892.235%5Ev32%5Epc_relevant_increate_t0_download_v2_base&utm_relevant_index=2)
8. [Vagrant打包本地開發環境](https://blog.csdn.net/qq_36431213/article/details/99710519)
9. [詳細解釋Vagrant 和進階功能](https://www.cnblogs.com/crazymakercircle/p/14194688.html)
10. [Vagrant 安裝CentOS](https://blog.csdn.net/qq_44413835/article/details/115220608)