Vagrant+VirtualBox虛擬環境

Vagrant+VirtualBox虛擬環境

軟件安裝

安裝都比較簡單,下載一直點擊Next。html

VirtualBox安裝:官網主頁shell

Vagrant安裝:官網主頁ubuntu

虛擬機基礎配置

虛擬機建立

查看命令與子命令幫助文檔:
vagrant -h
vagrant COMMAND -h
box子命令: vagrant box -h centos

  1. 到VirtualBox上找到一個本身須要的虛擬機,這裏使用centos/7

centos/7
centos/7

  1. 初始化並啓動虛擬機
# 建立初始化目錄
mkdir -p vagrant_centos;
# 添加鏡像,並輸入選擇本身的虛擬平臺,這裏選擇3,virtualbox
vagrant box add centos/7;
# 進入vagrant目錄,查看可用box並初始化啓動
cd vagrant_centos;
vagrant box list;
vagrant init centos/7;
vagrant up
# 命令行直接登陸虛擬機
vagrant ssh

初始化並啓動虛擬機
初始化並啓動虛擬機

登陸虛擬機輸出信息並退出
登陸虛擬機輸出信息並退出

  1. ssh登陸,先試用命令查看默認ssh配置:vagrant ssh-config

默認ssh配置
默認ssh配置

# ssh使用默認的祕鑰登陸
# -p 2222 指定端口
# vagrant 登陸角色
# 127.0.0.1 虛擬機IP
# -i 指定祕鑰
ssh -p 2222 vagrant@127.0.0.1 -i /Users/growingio/developments/vagrant_centos/.vagrant/machines/default/virtualbox/private_key
  1. 經常使用啓停管理命令

啓動:vagrant up
中止:vagrant halt
暫停:vagrant suspend
恢復:vagrant resume
重啓:vagrant reload
銷燬:vagrant destroybash

共享目錄

  1. 基礎共享目錄
# 項目虛擬機所在的目錄就是默認的共享目錄,不過文件的共享須要虛擬機重啓
mkdir test
echo "This is a test shared file." > test/file;

建立共享文件
建立共享文件

共享文件
共享文件

  1. 自定義共享目錄

須要先安裝virtualbox guest addtions,不然會報錯mount: unknown filesystem type ‘vboxsf’網絡

  • ubuntu系統處理方案
# 進入虛擬機
vagrant ssh
sudo apt-get update;
sudo apt-get install virtualbox-guest-utils;
  • Mac處理方案
# 進入虛擬機
vagrant ssh
sudo yum update -y;
sudo yum install gcc kernel-devel -y; 
# 關閉虛擬機
vagrant halt
# 到http://download.virtualbox.org/virtualbox 最新版本目錄下下載 MacOSVBoxGuestAdditions.iso文件
# 按如圖步驟添加軟驅,在彈出框選擇 VBoxGuestAdditions.iso
 # 啓動虛擬機並登錄
vagrant up;
vagrant ssh;
# 切換到root
sudo su - root;
mkdir -p /media/cdrom;
# 查看軟驅列表並掛載,注意軟驅名字
lsscsi;
mount /dev/sr0 /media/cdrom;
# 安裝擴展包
cd /media/cdrom;
sudo ./VBoxLinuxAdditions.run;

添加軟驅步驟
添加軟驅步驟

設備列表
設備列表

處理完成以後即可以設置共享了ssh

# Vagrantfile文件定位到config.vm.synced_folder所在行,編輯信息
# ../data 本機目錄
# /vagrant_data 虛擬機目錄
# 建立以及權限
config.vm.synced_folder "../data", "/vagrant_data", create:true, owner:"root", group:"root"
 # vagrant重啓機器
vagrant reload

測試共享目錄
測試共享目錄

配置網絡

私有網絡:須要與本機網絡位於不一樣網段
公有網絡:須要與本機網絡位於同一網段oop

配置私有網絡

  1. 修改文件Vagrantfile,將config.vm.network "private_network"這一行修改成本身但願使用的IP
  2. 重啓虛擬機vagrant reload

私有網絡
私有網絡

  1. 網絡通暢測試與ssh登陸

ssh登陸
ssh登陸

配置公有網絡

  1. 修改文件Vagrantfile,將config.vm.network "public_network"取消註釋,若是須要靜態IP,須要與本地電腦同網段。
  2. 重啓虛擬機vagrant reload

公有網絡
公有網絡

  1. 網絡通暢測試與ssh登陸

ssh登陸
ssh登陸

打包box與添加box

打包box

# 進入項目目錄啓動虛擬機
vagrant up
# 切換root,修改語言環境
vagrant ssh
sudo su - root
echo 'LANG="en_US.UTF-8"' > /etc/sysconfig/i18n
# 並刪除rules文件(打包佈置的時候以防網絡衝突)
ls /etc/udev/rules.d/*
sudo rm -f /etc/udev/rules.d/60-vboxadd.rules
exit
# 打包虛擬機爲box文件
vagrant package

打包爲.box文件
打包爲.box文件

添加box

# 添加打包後的.box文件到box列表
# hzhang/centos7 爲自定義的box名稱
# package.box 爲要添加的box文件
vagrant box add hzhang/centos7 package.box
# 查看box列表
vagrant box list

從.box文件添加box
從.box文件添加box

使用打包的box

# 建立新的項目目錄
cd ..; mkdir vagrant_hzhang; cd vagrant_hzhang;
# 使用剛從文件導出的box初始化項目
vagrant init hzhang/centos7;
# 啓動
vagrant up
# 

添加虛擬機與啓動
添加虛擬機與啓動

登陸機器
登陸機器

多主機

# 修改Vagrantfile文件,定義多虛擬機
  config.vm.define "hadoop101" do |hadoop101|
  end

  config.vm.define "hadoop102" do |hadoop102|
  end

  config.vm.define "hadoop103" do |hadoop103|
  end
 # 查看全部虛擬機狀態
vagrant status
# 啓動虛擬機,vagrant up啓動全部虛擬機,vagrant up [NAME]啓動指定名稱虛擬機。
vagrant up

全部虛擬機的狀態
全部虛擬機的狀態

多主機的網絡配置

# 修改Vagrantfile文件,定義多虛擬機的私有網絡,公有網絡參考單機公有網絡的配置,將以下配置替換修改便可
  config.vm.define "hadoop101" do |hadoop101|
    hadoop101.vm.network "private_network", ip: "192.168.2.101"
  end

  config.vm.define "hadoop102" do |hadoop102|
    hadoop102.vm.network "private_network", ip: "192.168.2.102"
  end

  config.vm.define "hadoop103" do |hadoop103|
    hadoop103.vm.network "private_network", ip: "192.168.2.103"
  end

多主機私有網絡
多主機私有網絡

多主機網絡測試
多主機網絡測試

多主機其餘設置

# 如:
 # 定義hadoop101機器
  config.vm.define "hadoop101" do |hadoop101|
    # 主機網絡
    hadoop101.vm.network "private_network", ip: "192.168.2.101"
    # 主機名
    hadoop101.vm.hostname = "hadoop101"
    # 同步目錄, 本地項目目錄下hadoop101_data到虛擬機/vagrant
    hadoop101.vm.synced_folder "hadoop101_data", "/vagrant", create:true, owner:"root", group:"root"
  end

多主機其它設置
多主機其它設置
相關文章
相關標籤/搜索