一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Vagrant 入門指南

 太極混元天尊 2018-04-29
Vagrant 是一個用來構(gòu)建和管理虛擬機(jī)環(huán)境的工具。Vagrant 有著易于使用的工作流,并且專注于自動化,降低了開發(fā)者搭建環(huán)境的時間,提高了生產(chǎn)力。解決了“在我的機(jī)器上可以工作”的問題。
-- Qhh0205



致謝
轉(zhuǎn)載自 | https://blog.csdn.net/qianghaohao/article/details/80038096
 作者 | Qhh0205

Vagrant 簡介

Vagrant 是一個用來構(gòu)建和管理虛擬機(jī)環(huán)境的工具。Vagrant 有著易于使用的工作流,并且專注于自動化,降低了開發(fā)者搭建環(huán)境的時間,提高了生產(chǎn)力。解決了“在我的機(jī)器上可以工作”的問題。

Vagrant 是為了方便的實現(xiàn)虛擬化環(huán)境而設(shè)計的,使用 Ruby 開發(fā),基于 VirtualBox 等虛擬機(jī)管理軟件的接口,提供了一個可配置、輕量級的便攜式虛擬開發(fā)環(huán)境。使用 Vagrant 可以很方便的就建立起來一個虛擬環(huán)境,而且可以模擬多臺虛擬機(jī),這樣我們平時還可以在開發(fā)機(jī)模擬分布式系統(tǒng)。

團(tuán)隊新員工加入,常常會遇到花一天甚至更多時間來從頭搭建完整的開發(fā)環(huán)境,而有了 Vagrant,只需要直接將已經(jīng)打包好的 package(里面包括開發(fā)工具,代碼庫,配置好的服務(wù)器等)拿過來就可以工作了,這對于提升工作效率非常有幫助。

為什么選擇 Vagrant

Vagrant 提供了一個易于配置,可重復(fù)使用,兼容的環(huán)境,通過一個單一的工作流程來控制,幫助你和團(tuán)隊最大化生產(chǎn)力和靈活性。 為了實現(xiàn) Vagrant 的魔力,Vagrant 站在了巨人的肩膀上。虛擬機(jī)的配置基于 VirtualBox,VMware,AWS 或者其他提供商。然后一些配置工具,比如 shell 腳本,Chef 或者 Puppet 可以自動化地在虛擬機(jī)安裝并配置軟件。

對于開發(fā)者人員

如果你是一個開發(fā)者,Vagrant 將在一個一次性的、一致的環(huán)境中隔離依賴項及其配置,而不會影響你習(xí)慣使用的任何工具(編輯器、瀏覽器、調(diào)試器等)。一旦你或者其他人創(chuàng)建了一個 Vagrantfile,你只需要執(zhí)行 vagrant up 所有的東西就自動安裝和配置了。你團(tuán)隊中的其他成員使用同一個配置文件來創(chuàng)建開發(fā)環(huán)境,因此不管你工作在 Linux,MacOS X 還是 Windows, 所有團(tuán)隊的成員都可以在統(tǒng)一的環(huán)境環(huán)境中運(yùn)行代碼,這樣就可以避免“在我的機(jī)器上可以工作”的問題。

對于運(yùn)維人員

如果你是一個運(yùn)維工程師或者 DevOps 工程師,Vagrant 給予你一個一次性的環(huán)境來開發(fā)和測試基礎(chǔ)架構(gòu)管理腳本。你可以使用本地虛擬機(jī)(比如 VirtualBox 或者 VMware)馬上測試一些東西,比如 shell 腳本、Chef cookbooks、Puppet 模塊等。然后,你可以用同樣的配置在遠(yuǎn)程云上,比如 AWS 或者 RackSpace,來測試這些腳本。拋棄之前自定義腳本來回收 EC2 實例吧,停止使用 SSH 在各種機(jī)器之間跳來跳去,請開始使用 Vagrant 來給你的工作帶來更多便利。

Vagrant 和 Terraform 的區(qū)別

Vagrant 和 Terraform 都出自同一個公司 HashiCorp[1],該公司主要做一些開源軟件,相關(guān)的產(chǎn)品還有 Packer[2],Consul[3],Vault[4],Nomad[5] 等。

Terraform 的主要用途是管理云提供商的遠(yuǎn)程資源,比如 AWS。Terraform 可以管理橫跨多個云提供商巨量的基礎(chǔ)設(shè)施。而 Vagrant 主要用來管理僅使用少量虛擬機(jī)的本地開發(fā)環(huán)境。

Vagrant 用于開發(fā)環(huán)境,Terraform 普遍用于基礎(chǔ)設(shè)施管理。

VirtualBox 安裝

VirtualBox 是 Oracle 開源的虛擬化系統(tǒng),和 VMware 是同類產(chǎn)品,支持多個平臺,可以到官方網(wǎng)站:https://www./wiki/Downloads 下載適合你平臺的 VirtualBox 最新版本并安裝。

提示:對于 Mac 用戶,如果系統(tǒng)為 OSX 10.13.3(mac OS High Sierra) 或者更高版本,安裝過程可能會失敗,報錯提示安裝失敗,安裝器遇到了一個錯誤導(dǎo)致安裝失敗...,原因是新版本 Mac 系統(tǒng)的安全機(jī)制阻止外部內(nèi)核擴(kuò)展安裝,導(dǎo)致安裝失敗。兩種解決方法:
1. 進(jìn)入系統(tǒng)偏好設(shè)置 > 安全性與隱私 > 通用,然后手動允許; 
2. 在終端敲命令禁用此安全特性:sudo spctl --master-disable

Vagrant 安裝

到官方網(wǎng)站下載相應(yīng)系統(tǒng)平臺的安裝包:http://www./downloads.html 。
直接根據(jù)向?qū)нM(jìn)行操作即可完成安裝,安裝完后就可以在終端輸入 vagrant 命令了。

提示:盡量下載最新的程序,因為 VirtualBox 經(jīng)常升級,升級后有些接口會變化,老的 Vagrant 可能無法使用。

Vagrant 啟動第一臺虛擬機(jī)

到此準(zhǔn)備工作(VirtualBox 和 Vagrant 安裝)基本上做完了,接下來就可以通過 Vagrant 來啟動一臺虛擬機(jī)了。

在啟動虛擬機(jī)之前先簡單介紹下 Vagrant box,box 是一個打包好的操作系統(tǒng),是一個后綴名為 .box 的文件,其實是一個壓縮包,里面包含了 Vagrant 的配置信息和 VirtualBox 的虛擬機(jī)鏡像文件。vagrant up 啟動虛擬機(jī)是基于 box 文件的,因此在啟動虛擬機(jī)前必須得把 box 文件準(zhǔn)備好。或者也可以在啟動的時候指定遠(yuǎn)程 box 地址,在這里我把 box 文件下載下來,然后啟動時指定該文件。

我使用網(wǎng)上分享的 ubuntu-server-16.04 這個 box,由于vagrant 官方 box[8] 下載速度特別慢,所以在此提供一下該 box 的百度網(wǎng)盤下載地址,加速下載:https://pan.baidu.com/s/1wJCeWEyxKQLVPi1IH1IlYg

1、新建一個目錄作為 Vagrant 的工程目錄

  1. haohao $ cd /Users/haohao

  2. haohao $ mkdir vagrant

2、添加前面下載的 box

添加 box 命令格式:

  1. vagrant box add <本地 box 名稱> <box 文件>

? 本地 box 名稱:自定義名稱,該名稱是本地 vagrant 管理時使用的名稱;
? box 文件:前面下載的 vagrant box 文件或者遠(yuǎn)程 box url 地址;
  1. haohao $ vagrant box add ubuntu-server-16.04 ubuntu-server-16.04-amd64-vagrant.box

  2. ==> box: Box file was not detected as metadata. Adding it directly...

  3. ==> box: Adding box 'ubuntu-server-16.04' (v0) for provider:

  4.    box: Unpacking necessary files from: file:///Users/haohao/vagrant/ubuntu-server-16.04-amd64-vagrant.box

  5. ==> box: Successfully added box 'ubuntu-server-16.04' (v0) for 'virtualbox'!

3、查看 box 是否添加成功

查看當(dāng)前 vagrant 中有哪些 box:

  1. haohao $ vagrant box list

  2. ubuntu-server-16.04 (virtualbox, 0)

4、初始化上面添加的 box

初始化命令格式:

  1. vagrant init <本地 box 名稱>

本地 box 名稱:第 2 步中添加的 box 名稱

這里初始化前面添加的 box,初始化后會在當(dāng)前目錄生產(chǎn)一個 Vagrantfile 文件,里面包含了虛擬機(jī)的各種配置,關(guān)于具體每個配置項是什么意思,后面會介紹。

  1. haohao $ vagrant init 'ubuntu-server-16.04'

  2. A `Vagrantfile` has been placed in this directory. You are now

  3. ready to `vagrant up` your first virtual environment! Please read

  4. the comments in the Vagrantfile as well as documentation on

  5. `` for more information on using Vagrant.

5、啟動虛擬機(jī)

虛擬機(jī)啟動命令:

  1. vagrant up

啟動虛擬機(jī)時會自動將當(dāng)前目錄(即 Vagrantfile 文件所在目錄),和虛擬機(jī)的 /vagrant目錄共享。

  1. haohao $ vagrant up

  2. Bringing machine 'default' up with 'virtualbox' provider...

  3. ==> default: Importing base box 'ubuntu-server-16.04'...

  4. ==> default: Matching MAC address for NAT networking...

  5. ==> default: Setting the name of the VM: vagrant_default_1524288099752_62326

  6. ==> default: Clearing any previously set network interfaces...

  7. .....

  8. ==> default: Mounting shared folders...

  9.    default: /vagrant => /Users/haohao/vagrant

6、連接虛擬機(jī)

  1. haohao $ vagrant ssh

  2. Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-98-generic x86_64)

  3. * Documentation:  https://help.ubuntu.com

  4. * Management:     https://landscape.canonical.com

  5. * Support:        https://ubuntu.com/advantage

  6.  Get cloud support with Ubuntu Advantage Cloud Guest:

  7.    http://www.ubuntu.com/business/services/cloud

  8. 0 packages can be updated.

  9. 0 updates are security updates.

  10. Last login: Sat Apr 21 05:28:37 2018 from 10.0.2.2

  11. haohao $

7、查看 Vagrant 共享目錄

進(jìn)入虛擬機(jī)后執(zhí)行 df -h 可以看到 Vagrant 默認(rèn)把宿主機(jī) Vagrantfile 所在的目錄和虛擬機(jī)的 /vagrant 目錄共享,可以通過 ls /vagrant/ 查看該目錄內(nèi)容,內(nèi)容和宿主機(jī)對應(yīng)目錄一致。

  1. haohao $ df -h

  2. Filesystem      Size  Used Avail Use% Mounted on

  3. udev            490M     0  490M   0% /dev

  4. tmpfs           100M  3.1M   97M   4% /run

  5. /dev/sda1       9.7G  857M  8.8G   9% /

  6. tmpfs           497M     0  497M   0% /dev/shm

  7. tmpfs           5.0M     0  5.0M   0% /run/lock

  8. tmpfs           497M     0  497M   0% /sys/fs/cgroup

  9. vagrant         234G   49G  185G  21% /vagrant

  10. tmpfs           100M     0  100M   0% /run/user/1000

  11. # ls 查看該共享目錄內(nèi)容和宿主機(jī)內(nèi)容一致

  12. haohao $ ls /vagrant/

  13. ubuntu-xenial-16.04-cloudimg-console.log  Vagrantfile

Vagrant 配置文件淺析

前面我們執(zhí)行 vagrant init <本地 box 名稱> 會在當(dāng)前目錄生成 Vagrantfile 文件,這個文件是非常重要的,一般給別人共享自己的環(huán)境時都是提供一個 Vagrantfile 和一個 box 文件,這樣就可以很輕松地將環(huán)境共享給別人,別人能得到一模一樣的統(tǒng)一的環(huán)境,這就是使用 Vagrant 的好處。

Vagrantfile 主要包括三個方面的配置,虛擬機(jī)的配置、SSH配置、Vagrant 的一些基礎(chǔ)配置。Vagrant 是使用 Ruby 開發(fā)的,所以它的配置語法也是 Ruby 的,對于沒有學(xué)過 Ruby 的朋友也沒關(guān)系,根據(jù)例子模仿下就會了。

修改完配置后需要執(zhí)行 vagrant reload 重啟 VM 使其配置生效。

以下簡單介紹下常用配置的配置項:

1. box 名稱設(shè)置

  1. config.vm.box = 'base'

上面這配置展示了 Vagrant 要去啟用那個box作為系統(tǒng),也就是前面我們輸入 vagrant init <本地 box 名稱>時所指定的 box,如果沒有輸入 box 名稱的話,那么默認(rèn)就是 base。

2、VM 相關(guān)配置

VirtualBox 提供了 VBoxManage 這個命令行工具,可以讓我們設(shè)定 VM,用modifyvm這個命令讓我們可以設(shè)定 VM 的名稱和內(nèi)存大小等等,這里說的名稱指的是在 VirtualBox 中顯示的名稱,我們也可以在 Vagrantfile 中進(jìn)行設(shè)定,舉例如下:

調(diào)用 VBoxManage 的 modifyvm 的命令,設(shè)置 VM 的名稱為 ubuntu,內(nèi)存為 1024 MB。你可以類似的通過定制其它 VM 屬性來定制你自己的 VM。

  1. config.vm.provider 'virtualbox' do |v|

  2.  v.customize ['modifyvm', :id, '--name', 'ubuntu', '--memory', '1024']

  3. end

3、網(wǎng)絡(luò)設(shè)置

Vagrant 有兩種方式來進(jìn)行網(wǎng)絡(luò)連接,一種是 host-only (主機(jī)模式),這種模式下所有的虛擬系統(tǒng)是可以互相通信的,但虛擬系統(tǒng)和真實的網(wǎng)絡(luò)是被隔離開的,虛擬機(jī)和宿主機(jī)是可以互相通信的,相當(dāng)于兩臺機(jī)器通過雙絞線互聯(lián)。另一種是 Bridge(橋接模式),該模式下的 VM 就像是局域網(wǎng)中的一臺獨(dú)立的主機(jī),可以和局域網(wǎng)中的任何一臺機(jī)器通信,這種情況下需要手動給 VM 配 IP 地址,子網(wǎng)掩碼等。我們一般選擇 host-only 模式,配置如下:

  1. config.vm.network :private_network, ip: '11.11.11.11'

4、hostname 設(shè)置

hostname 的設(shè)置非常簡單:

  1. config.vm.hostname = 'kubernetes'

5、目錄共享

我們前面介紹過/vagrant目錄默認(rèn)就是當(dāng)前的開發(fā)目錄,這是在虛擬機(jī)開啟的時候默認(rèn)掛載同步的。我們還可以通過配置來設(shè)置額外的同步目錄:

  1. # 第一個參數(shù)是主機(jī)的目錄,第二個參數(shù)是虛擬機(jī)掛載的目錄

  2. config.vm.synced_folder  '/Users/haohao/data', '/vagrant_data'

6、端口轉(zhuǎn)發(fā)

對宿主機(jī)器上 8080 端口的訪問請求 forward 到虛擬機(jī)的 80 端口的服務(wù)上:

  1. config.vm.network :forwarded_port, guest: 80, host: 8080

Vagrant 常用命令清單

vagrant box add 添加 box
vagrant init 初始化 box
vagrant up 啟動虛擬機(jī)
vagrant ssh 登錄虛擬機(jī)
vagrant box list 列出 Vagrant 當(dāng)前 box 列表
vagrant box remove 刪除相應(yīng)的 box
vagrant destroy 停止當(dāng)前正在運(yùn)行的虛擬機(jī)并銷毀所有創(chuàng)建的資源
vagrant halt 關(guān)機(jī)
vagrant package 把當(dāng)前的運(yùn)行的虛擬機(jī)環(huán)境進(jìn)行打包為 box 文件
vagrant plugin 安裝卸載插件
vagrant reload 重新啟動虛擬機(jī),重新載入配置文件
vagrant resume 恢復(fù)被掛起的狀態(tài)
vagrant ssh-config 輸出用于 ssh 連接的一些信息
vagrant status 獲取當(dāng)前虛擬機(jī)的狀態(tài)
vagrant suspend 掛起當(dāng)前的虛擬機(jī)
vagrant up 重啟虛擬機(jī)

Vagrant 啟動虛擬機(jī)集群

前面我們都是通過一個 Vagrantfile 配置啟動單臺機(jī)器,如果我們要啟動一個集群,那么可以把需要的節(jié)點在一個 Vagrantfile 寫好,然后直接就可以通過 vagrant up 同時啟動多個 VM 組成一個集群。以下示例配置一個 web 節(jié)點和一個 db 節(jié)點,兩個節(jié)點在同一個網(wǎng)段,并且使用同一個 box 啟動:

  1. Vagrant.configure('2') do |config|

  2.  config.vm.define :web do |web|

  3.    web.vm.provider 'virtualbox' do |v|

  4.          v.customize ['modifyvm', :id, '--name', 'web', '--memory', '512']

  5.    end

  6.    web.vm.box = 'ubuntu-server-16.04'

  7.    web.vm.hostname = 'web'

  8.    web.vm.network :private_network, ip: '11.11.1.1'

  9.  end

  10.  config.vm.define :db do |db|

  11.    db.vm.provider 'virtualbox' do |v|

  12.          v.customize ['modifyvm', :id, '--name', 'db', '--memory', '512']

  13.    end

  14.    db.vm.box = 'ubuntu-server-16.04'

  15.    db.vm.hostname = 'db'

  16.    db.vm.network :private_network, ip: '11.11.1.2'

  17.  end

  18. end

相關(guān)連接

https://www./intro/index.html
https://blog.csdn.net/rickiyeat/article/details/55097687
https://github.com/astaxie/go-best-practice/blob/master/ebook/zh/01.0.md


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99精品国产自在现线观看| 欧美在线观看视频免费不卡| 狠狠干狠狠操在线播放| 91精品国产品国语在线不卡| 国产免费人成视频尤物| 色综合久久中文综合网| 都市激情小说在线一区二区三区| 国产成人国产精品国产三级| 日本一二三区不卡免费| 日韩成人动作片在线观看| 美国欧洲日本韩国二本道| 国产在线不卡中文字幕| 日本欧美视频在线观看免费| 久久国产精品亚州精品毛片| 日韩欧美综合中文字幕| 又大又长又粗又黄国产| 欧美熟妇一区二区在线| 91日韩欧美在线视频| 精品欧美在线观看国产| 欧美国产亚洲一区二区三区| 蜜桃传媒视频麻豆第一区| 男人大臿蕉香蕉大视频| 在线一区二区免费的视频| 五月天丁香亚洲综合网| 深夜视频成人在线观看| 草草视频福利在线观看| 欧美午夜国产在线观看| 丝袜人妻夜夜爽一区二区三区| 日本在线视频播放91| 亚洲国产成人一区二区在线观看| 欧美日韩综合在线精品| 欧美日本道一区二区三区| 国产精品欧美一级免费| 欧洲一区二区三区自拍天堂| 日韩欧美中文字幕av| 美女被后入视频在线观看| 男女午夜在线免费观看视频| 极品熟女一区二区三区| 尹人大香蕉一级片免费看| 免费午夜福利不卡片在线 视频| 日韩欧美国产精品中文字幕|