什么是vargrant?
vagrant是一個構件虛擬開發環境的工具。他用于創建部署虛擬的開發環境;
白話:使用vagrant來創建和管理虛擬機的,而裝虛擬機的文件由運維組對開發環境做的一個box的鏡像。?
這樣做的目的,省去了我們搭建開發環境,直接裝一個虛擬機,把正在使用的開發環境的鏡像還原進去。?
當然使用vagrant最主要解決的一個問題就是,讓開發環境同步?!按a在我機子上運行沒有問題”這種說辭將成為歷史。
看下圖,其中,第一種是直接在物理機上裝 Hypervisor,然后再該層上安裝我們自己的虛擬機,第二種是先在物理機上裝任意一個操作系統,然后在此基礎上安裝 Hypervisor,再然后再該層上安裝我們自己的虛擬機,我們大部分用 Vmware 都是第二種,Vagrant就是第一種,微軟自帶的hyper-v ;
vagrant 的構成
Vagrant 和 Docker 有什么區別?
Vagrant 對應的是VM層面的,而Docker對應的是Container
vagrant安裝
1、安裝 providers,你有兩種選擇,vritualbox 和 hyper-v,如果你是window10及以上系統,那么建議使用hyper-v,否則請您使用 vartualbox
如果是用微軟自帶的hyper-v,則你需要看:https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/about/;
如果你是用virtualBox,則你需要安裝它,https://www.virtualbox.org/wiki/Downloads;vmware因為收費不推薦;
2、安裝vagrant,https://www.vagrantup.com/downloads.html
檢查是否成功安裝:vagrant --version
通過vagrant安裝box鏡像
離線方式(強烈推薦)
1、下載box文件
vagrant部署環境時,需要一個box文件。如果是在公司里面,可以從他們那里拷一個box文件安裝。這樣安裝的環境與他們是一致的。即模擬了一個開發環境。box文件也可以在網上下載。如:
在 http://www.vagrantbox.es/? 或?https://app.vagrantup.com/boxes/search 上找到適合你自己的box,然后將box文件下載下來;
2、把box文件添加到虛擬機
新建一個目錄,將下載好的box鏡像文件丟入里面,在里面用poershell運行(需要管理員身份運行):
//添加box鏡像文件到虛擬機中vagrant box add centosMix CentOS-7.1.1503-x86_64-netboot.box --provider=[hyperv|vertualbox]
?或者你也可以不用下載下來,而是通過:
vagrant box add centosMix https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box
3、初始化虛擬機box文件
# centosMix 是上面命令中我們自定義的虛擬機名稱vagrant init centosMix
執行完上面的命令之后,可以在目錄下看到一個已經生成的vagrantFile文件。這是一個配置文件,里面包含該虛擬機的一些配置信息,其實就幾行而已,你可以去掉注釋后看到。?
4、啟動虛擬機
vagrant up --provider=hyperv --color # 注意,安裝到hyper上而不是virtualbox中如果是 用virtualbox虛擬機的話,就寫成:vagrant up --provider=virtualbox --color
?注意輸出的信息,一般的,virtualbox的ip為127.0.0.1 端口為2222,而hyperv的ip為其顯示的ip,端口是22;
?判斷是否成功安裝:vagrant status
進行完上面步驟后,就可以像使用服務器一樣,遠程到虛擬機了??梢允褂玫墓ぞ哂衳shell工具,winscp等工具。
初始安裝的時候后,遠程的時候,使用的IP是127.0.0.1 端口號是2222(看輸出信息知道的)。這些信息可以后續在進行設置。如果嫌麻煩,也可以修改vagrantFile文件之后,在進行安裝。默認中的賬號密碼都為:vagrant
在線方式(國內用戶不推薦)
略
常用命令
vagrant up
啟動或創建(第一次)虛擬機
vagrant stauts
檢查虛擬機狀態
vagrant ssh <name>
通過ssh連接
vagrant ssh-config
查看ssh配置信息
vagrant suspend/resume/reload/hat <name>
暫停suspend / 重啟resume、重載reload、停止halt(停止的虛擬機需要 up 啟動)
vagrant destroy <name>
刪除/移除 虛擬機
vagrant destroy -f 強制刪除所有虛擬機
已經刪除的虛擬機,其所在的目錄中的?.vagrant 也最好刪除掉;
.vagrant 的目錄結構
> tree /FD:.│ Vagrantfile│└─.vagrant ├─machines 虛擬機目錄 │ └─default 我們創建的虛擬機名稱,默認為default │ └─hyperv 我們default虛擬機provider,為 hyperv,即:default虛擬機是通過 hyperv 創建的 │ │ action_configure │ │ action_provision │ │ action_set_name │ │ box_meta │ │ creator_uid │ │ id │ │ index_uuid │ │ private_key ssh的登陸密鑰key │ │ synced_folders │ │ vagrant_cwd │ │ │ └─Virtual Hard Disks 虛擬機的磁盤文件 │ generic-ubuntu2004-hyperv.vhdx │ └─rgloader loader.rb
Box 文件目錄在哪兒?
一般在 用戶目錄下的 .vagrant.d 目錄中:
C:\Users\用戶名\.vagrant.d\
C:\Users\用戶名\.vagrant.d>tree /FC:.│ insecure_private_key│ setup_version│├─boxes // box就存放在這里│ ├─hyperv│ │ └─0│ │ └─hyperv│ │ │ info.json│ │ │ metadata.json│ │ │ Vagrantfile│ │ ││ │ ├─Virtual Hard Disks│ │ │ generic-ubuntu2004-hyperv.vhdx│ │ ││ │ └─Virtual Machines│ │ box.xml│ │ D90B1531-23A2-4D41-957F-8593E9356E69.vmcx│ │ D90B1531-23A2-4D41-957F-8593E9356E69.vmgs│ │ D90B1531-23A2-4D41-957F-8593E9356E69.VMRS│ ││ └─ubuntu│ └─0│ └─hyperv│ │ info.json│ │ metadata.json│ │ Vagrantfile│ ││ ├─Virtual Hard Disks│ │ generic-ubuntu2004-hyperv.vhdx│ ││ └─Virtual Machines│ box.xml│ D90B1531-23A2-4D41-957F-8593E9356E69.vmcx│ D90B1531-23A2-4D41-957F-8593E9356E69.vmgs│ D90B1531-23A2-4D41-957F-8593E9356E69.VMRS│├─data│ │ checkpoint_cache│ │ checkpoint_signature│ │ lock.dotlock.lock│ ││ └─machine-index│ index│ index.lock│├─gems│ └─2.7.4├─rgloader│ loader.rb│└─tmp boxe1394d60c23f1a8b64cfb37d8591b8a521b31cdf
vagrantfile文件的寫法
box的名稱為 centos/7
安裝后設置其hostname為vagrant-demo
安裝的box版本為1905.1(注意:如果本地不存在該版本,會從網上拉取下來)
每次配置 vagrantfile 好后,需要重新創建vagrant;
更多配置前往:https://www.vagrantup.com/docs/vagrantfile?查看
vagrant的ssh連接
我們可以在 vagrantfile 目錄下使用命令 vagrant ssh 來登陸我們的虛擬機而不需要輸入用戶名和密碼,這是為什么?
執行vagrant ssh 命令后,vagrant會找 當前目錄的.vagrant目錄中的private.key文件,來登陸對應的虛擬機;注意:public.key 在創建linux時被注入到linux中了;
你也可以通過 vagrant ssh-config 來查看當前所在的虛擬機的信息;
有些時候,我們需要通過用戶名密碼來登陸虛擬機中,而vagrant在安裝虛擬機時應將使用密碼來登陸的功能禁用了,vagrant的本意就是建議我們最好通過private_key來登陸虛擬機,但是我們就像用密碼,如何設置?
1、先用 vagrant ssh 登陸我們的虛擬機中(也就是先用 private_key 登陸我們的虛擬機)
2、在虛擬機中的 /etc/ssh/sshd_config 中,將?PermitRootLogin由no改為yes,保存
3、重啟sshd服務:sudo service sshd restart
4、完畢,你可以退出,然后使用賬號密碼(都為vagrant)登陸到虛擬機了;
但是,我們還是建議你在生產環境中使用private_key來登陸到虛擬機中;
使用ssh的技巧(推薦設置)
我們輸入 vagrant ssh-config 命令,輸出的內容是可以被我們的ssh所使用的,也就是說,在任何目錄中都能夠快速的登陸到我們虛擬機中,而不需要先進入到 vagrantfile 目錄中;
在??C:\Users\用戶名\.ssh\ 目錄中,新建一個 config 文件(如果不存在,注意沒有文件名后綴),將上面紅色框起來的內容復制到 config 文件中,修改 第一行 Host default,default 可以改為你熟悉的名字,比如這里是 hlinux;
這樣,你就可以在任何目錄中使用? ssh hlinux 來直接登錄到虛擬機中了;
注意:hyper-v 新建的虛擬機的ip地址是不固定的,可能會在你重啟電腦的時候變動,這時候使用 ssh hlinux 就無法登陸到虛擬機了,記得改ip即可;
insecure_private_key
所有創建出來的虛擬機,都可以使用 insecure_private_key 來連接到虛擬機中(vagrant在安裝虛擬機的時候創建一個public_key安裝在虛擬機中,對應的private_key就是:insecure_private_key? 了);
insecure_private_key文件 存在哪里?
C:\Users\用戶名\.vagrant.d\ 下
但是,我們并現在并不能通過 insecure_private_key 來連接到虛擬機,因為在你安裝虛擬機時,vagrant會自己生成一個 一對private_key 和 public_key,public_key 注入到虛擬機,private_key 替換 insecure_private_key 了,如下圖:
每臺虛擬機目錄中都有自己的 private_key文件:
而我想要的是以后所有創建出來的虛擬機都是用統一的 insecure_private_key 來登錄,如何做?要想禁止 vagrant 去生成每個虛擬機自己的 key,就想是用?insecure_private_key,可以在每個 vagrantfile 中添加一句話:
這樣,每次通過這個 vagrantfile 來生成虛擬機時,都不會生成自己獨有的 key,而是使用統一使用 insecure_private_key 文件來登錄到虛擬機中;
上圖中已經沒有 生成替換使用自己的key的信息了;
insecure_private_key 對應的 public_key 在虛擬中哪里呢?/home/vagrant/.ssh/authorized_keys,如下圖:
一個vagrantfile創建多臺虛擬機并對每個虛擬機單獨設置
上圖中配置了需要創建了兩臺虛擬機,第一臺名為 web,且設置hostname和box_version,第二臺名為 db,只設置了hostname,box_version將會使用全局的 1905.1 這個版本;
使用循環來設置多臺虛擬機(更加靈活)
hyper-v 同步文件夾
宿主機的Vagrantfile所在的當前目錄同步到虛擬機中的 /vagrant 目錄中,同步的類型為smb
下面代碼,是適配了 用 virtualbox 和 hyperv 兩種provider的文件同步:
vagrant box 的操作(重要)
vagrant box 的存放是在:C:\Users\用戶名\.vagrant.d\ 下的;
命令:
vagrant box list? ? ?列出所有已經安裝的box
vagrant box add centos/7? ? 下載 centos/7 這個box
vagrant box remove centos/7 [--provider=hyperv]? ?刪除centos/7這個box
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
c230series 芯片組參數?英特爾Skylake-S-100系列/C230系列芯片組其實就是英特爾H110芯片組的主板,1151針,六代平臺的主板可以支持i7 6700K CPU,但是主板不支持超頻。I7 6700K CPU建議配Z170或Z270主板,支持超頻。c230芯片是什么主板?服務器C230芯片組,E3 1230V5專用主板芯片組,目前E3主板是華碩E3 PRO gaming V5...
怎么登錄青驕第二課堂?首先點擊鏈接https://www.2-class.com/competition進入清教第二課堂官方網站后,電腦用戶點擊網站第一個登錄頁面進入賬號登錄界面,手機用戶點擊我的課程進入賬號登錄界面。2-class平臺怎么注冊?點擊flash場景右上角的【注冊】按鈕,進入注冊頁面,根據頁面要求填寫注冊信息,注冊成功。注意:不支持個人注冊帳戶。所有參與者的帳號和密碼均由學校管理員提...
安徽界首市屬于哪個市 界首在安徽哪里?界首在哪里? 界首,安徽省縣級市,由阜陽市管理,位于安徽省西北部,又稱界溝和小上海。南接臨泉縣、阜陽,東接太和縣,西北與河南省沈丘、丹城交界。因南宋著名將軍劉琦失敗而得名??谷諔馉幤陂g,由于交通堵塞,界首沒有受到日軍的侵犯,上海、南京等城市的商人紛紛遷往界首。一度,人口急劇增加,商人聚集,貿易繁榮,因此被譽為小上海。首領歷史悠久,文化豐富。東漢時期,王莽和...