Vagrant入門
阿新 • • 發佈:2018-02-25
index ruby dd centos prim ng- source ini 構建 模式
vagrant工具的使用介紹
一、認識Vagrant
1.1 什麽是vagrant?
1)Vagrant是一款用來構建虛擬開發環境的工具
官網地址:https://www.vagrantup.com
box下載:http://www.vagrantbox.es
2)基於ruby開發
3)默認使用Oracle virtualbox作為虛擬化工具,需要打開機器的虛擬機支持
解決:進入BIOS開啟VT虛擬化
1.2 vagrant常用命令
# vagrant box add {title} {url} # examples: vagrant box add cnetos66 c:\work\vm\centos66_v2.box vagrant box add https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box vagrant init [boxname] # 生成配置文件 vagrant -h # 查看幫助 vagrant up [name] # 啟動虛擬機 vagrant ssh [name] # 連接 vagrant suspend [name] # 相當於休眠 vagrant resume [name] # 恢復 vagrant reload # 修改配置文件後,重啟虛擬化開發環境 vagrant [-f] destory [name] # 刪除虛擬機 vagrant box list # 列出當前導入的box vagrant box remove [name] # 移除box vagrant up [name] # 啟動machine vagrant halt [name] # 關閉machine vagrant status [name] # 查看machine的狀態 # 將虛擬機打包成box vagrant package centos66 --output c:\work\box\centos_mysql.box
1.3 vagrant配置文件
https://www.vagrantup.com/docs/vagrantfile/
1)生成配置文件
vagrant init [boxname] # 說明 # 當前目錄下生成Vagrantfile文件 # 使用ruby的語法,叠代器遍歷 vagrant init centos/7 --box-version 1801.02 vagrant up # 說明 # boxname參數: # box-version參數:1801.02 # 如果本地沒有會從https://vagrantcloud.com/centos/7下載 # https://vagrantcloud.com/centos/boxes/7/versions/1801.02/providers/virtualbox.box
生成如下配置
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.box_version = "1801.02"
end
2)網絡的三種配置模式
# 較為常用是端口映射,就是將虛擬機中的端口映射到宿主機對應的端口直接使用 ,在Vagrantfile中配置: # guest: 80 表示虛擬機中的80端口, host: 8080 表示映射到宿主機的8080端口。 # 宿主機端口 > 1024 config.vm.network: "forwarded_port", guest: 80, host: 8080, protocol: "tcp/udp" # host only # 如果需要自己自由的訪問虛擬機,但是別人不需要訪問虛擬機, # 可以使用private_network,並為虛擬機設置IP ,在Vagrantfile中配置: # 192.168.1.120 表示虛擬機的IP,多臺虛擬機的話需要互相訪問的話,設置在相同網段即可 config.vm.network: "private_network", ip: "192.168.1.120" # 如果需要將虛擬機作為當前局域網中的一臺計算機,由局域網進行DHCP,那麽在Vagrantfile中配置: config.vm.network: "public_network", ip: "192.168.1.120" # 共有網絡,還可以支持網橋 config.vm.netowrk "public_network", :bridge => 'eth1: SSID'
3)文件目錄共享
config.vm.synced_folder "c:/work/vm", "/data"
config.vm.synced_folder "./", "/data/web/apache_default/"
二、實踐
2.1 安裝Vagrant
1)下載
https://www.vagrantup.com/downloads.html
vagrant_2.0.2_x86_64.msi
2)安裝
默認安裝就可以(自動添加vagrant安裝目錄下的bin目錄加入到path)
3)驗證安裝
vagrant -v
2.2 安裝VirtualBox
VirtualBox-5.2.0-118431-Win.exe
默認安裝就可以了
修改一下默認虛擬機位置
2.3 box->Vagrant
下載box
http://www.vagrantbox.es/
# CentOS 6.7 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30)[notes]
https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
新建工作目錄並且切換到該目錄下
mkdir E:\work\vm
cd E:\work\vm
添加box到Vagrant
vagrant box add centos67 E:\work\box\vagrant-centos-6.7.box
# 說明
# vagrant:vagrant的命令
# box:參數
# add:添加一個box鏡像
# centos67:鏡像名稱
# E:\work\box\vagrant-centos-6.7.box:鏡像的地址
# 查看box
vagrant box list
初始化配置
# 在當前工作目錄下生成配置文件Vagrantfile
vagrant init centos67
# 說明
# centos67:box名稱,如果只有一個可省略
配置文件
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define :node0 do |node0|
node0.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "node0", "--memory", "1024"]
end
node0.vm.box = "centos67"
node0.vm.hostname = "node0"
node0.vm.network :public_network, ip:"192.168.5.150", bridge: "eth1"
node0.vm.synced_folder "data", "/data"
node0.vm.synced_folder "E:\\git_home\\book\\2017\\Cpp_Primer\\samples", "/work"
end
end
配置文件說明
- 這是ruby的語法
Vagrant.configure("2")
:2是版本的意思|config|、|node0|、|v|
:變量的意思v.gui = true
:virtualbox的界面也會啟動
管理虛擬機
# 啟動
vagrant up
# 查看狀態
vagrant status
# 停止
vagrant halt
# 釋放
vagrant destory
# 查看已加載的box
vagrant box list
2.4 Vagrant->box
# 打包虛擬機
vagrant package centos67 --output e:\work\vm\centos_mysql.box
# 說明:
# 如果網絡模式中使用 private_network 的話,在打包之前需要清除一下private_network的設置,避免不必要的錯誤:
# sudo rm -f /etc/udev/rule.d/70-persistent-net.rules
三、參考
- 官方文檔
- Getting Started
- 搭建Linux工作環境之Vagrant
- 使用vagrant+VirtualBox搭建代碼建調試環境
- 使用vagrant部署開發環境
- 使用Vagrant在Windows下部署開發環境
- 創建自己的Vagrant box
Vagrant入門